2015-01-11 3 views
1

Я настраиваю UIPickerView внутри статического UITableViewCell через раскадровку. По какой-то причине UIPickerView не появляется при загрузке контроллера.Статический UITableViewController с UIPickerView не удается загрузить UIPickerView

Раскадровка: Storyboard

UIPickerView является потомком содержимого ячейки View ... и Table View сконфигурирован для отображения "Static Cells". (Сгруппированные стиль)

UIPickerView делегат и DataSource подключены к UITableViewController, как Outlets в раскадровки Connections Inspector:

Connections Inspector

Если программно добавить Picker View в ячейки таблицы, в viewDidLayoutSubviews обратный вызов, затем появляется PickerView и обратные вызовы делегатов, так что Picker может быть настроен с данными. (TitleForRow и т.д.):

В TableViewController.m:

// Can't figure out why - but regionPicker view can't be added in viewDidLoad, so it gets added here 
- (void) viewDidLayoutSubviews { 
    // For some reason regionPicker view gets pushed to top of view unless setting x & y to 0,0 here... 
    [self.regionPicker setFrame:CGRectMake(0, 0, 320, 162)]; 
    // Add the regionPicker view as a subview to the regionPickerCell 
    [self.regionPickerCell.contentView addSubview:self.regionPicker];  
} 

Это вызывает проблемы с надлежащей инициализации Picker, поскольку viewDidLayoutSubviews вызывается каждый раз, когда новый выбор сделан в UIPickerView.

Вот что мой файл TableViewController.h выглядит следующим образом:

@import UIKit; 

@class DetailViewController; 

@interface DetailViewController : UITableViewController<UIPickerViewDataSource, UIPickerViewDelegate> 

@property (weak, nonatomic) IBOutlet UITableViewCell *regionCell; 
@property (weak, nonatomic) IBOutlet UITableViewCell *regionPickerCell; 
@property (weak, nonatomic) IBOutlet UIPickerView *regionPicker; 

@end 

Что такое правильный способ загрузить UIPickerView в статическом UITableViewContoller через Раскадровка?

Кроме того, я не знаю, если это уместно, но Table View Controller, в этом случае, становится загружен через Segue из другого UITableViewController:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"configNotification"]) { 

     UINavigationController *navigationController = segue.destinationViewController; 
     // Here's the UITableViewController in question... 
     DetailViewController *detailViewController = [navigationController viewControllers][0]; 

     NSIndexPath *selectedPath = [self.tableView indexPathForCell:sender]; 
    } 
} 

Любые мысли высоко оценили!

Xcode v6.1, v8.1 SDK

+0

Вы проверили 'reuseIdentifier' для ячеек? – n00bProgrammer

+0

Какова высота ячейки таблицы? И убедитесь, что вы сами задаете значения или нет. –

+0

@UtkarshSingh - Я не использую reuseIdentifier ... эти ячейки статичны. – Sly

ответ

0

Я решил это путем удаления существующего Picker вида в этом контроллере, из раскадровки, а затем добавляя каждый его обратно.

По какой-то причине вид подборщика был выделен серым цветом в окне раскадровки. (первое изображение выше) После удаления Picker View и добавления его назад он не был выделен серым цветом. Я не знаю, почему Picker View был выделен в первую очередь, или что это означает из раскадровки, но, надеюсь, это поможет кому-то в будущем.