Я настраиваю UIPickerView внутри статического UITableViewCell через раскадровку. По какой-то причине UIPickerView не появляется при загрузке контроллера.Статический UITableViewController с UIPickerView не удается загрузить UIPickerView
Раскадровка:
UIPickerView является потомком содержимого ячейки View ... и Table View сконфигурирован для отображения "Static Cells". (Сгруппированные стиль)
UIPickerView делегат и DataSource подключены к UITableViewController, как Outlets в раскадровки 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
Вы проверили 'reuseIdentifier' для ячеек? – n00bProgrammer
Какова высота ячейки таблицы? И убедитесь, что вы сами задаете значения или нет. –
@UtkarshSingh - Я не использую reuseIdentifier ... эти ячейки статичны. – Sly