Как визуально создавать и использовать статические ячейки в UITableView, встроенном в UIViewController
Я использую XCode 4.2 и построил свой пользовательский интерфейс с помощью раскадровки. Мне нужно создать представление, которое имеет содержимое выше и ниже UITableView, и я могу достичь этого с помощью UIViewController. UITableViewController не позволяет добавлять содержимое выше или ниже таблицы. Вы можете использовать верхний/нижний колонтитул таблицы, но это не работает для того, что я хотел бы достичь.
теперь у меня есть UIViewController с встроенным в него UITableView. Я могу отрегулировать высоту и ширину UITableView соответственно, который предоставляет мне макет пользовательского интерфейса, который я ищу.
Я могу настроить статические ячейки в UITableView, но когда я пытаюсь построить я получаю следующую ошибку:
Незаконная конфигурация: статические табличные представления допустимы только при внедрении в экземпляры UITableViewController
мой вопрос в том, как другие все это? Создание tableview со статическими ячейками и их визуальное размещение очень приятно, но по-видимому, это не разрешено по какой-то причине, которую я не могу понять. Я не могу переключиться на UITableViewController из-за моих визуальных требований к макету.
любая помощь была бы весьма признательна.
6 ответов:
вы правы. В раскадровке вы не можете иметь tableView со статическими ячейками, встроенными в viewController. Один из способов обойти это (я сам не пробовал, поэтому я не уверен, что это работает) может быть то, что вы создаете экземпляр UITableViewController в раскадровке со статическими ячейками. Добавьте экземпляр UIView в свой viewController, а затем программно загрузите tableView UITableViewController в UIView вашего viewController.
вы можете достичь этого в Xcode 4.5 и более поздних версиях, предполагая, что ваше приложение предназначено для iOS 6+.
в раскадровке просто создайте UIViewController с контейнером представления внутри его основного вида. Затем подключите этот контейнер представления к UITableViewController, который содержит статические ячейки.
вот так:
вам не нужна ни одна строка кода. Просто нажмите кнопку, перетащить и выберите Вставить. Сдерживание контроллера вида является справился за тебя.
ответ pmd работает, но в случае, если требуется обратная совместимость с iOS 5, Вы можете выполнить встраивание программно с помощью API-интерфейса View Containment.
в методе viewDidLoad вашего родительского UIViewController:
- (void)viewDidLoad { [super viewDidLoad]; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; MyTableViewController* vc =[storyboard instantiateViewControllerWithIdentifier:@"MyTableVC"]; [self addChildViewController:vc]; [self.view addSubview:vc.view]; // ensure embedded view is aligned to top CGRect frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); vc.view.frame = frame; [vc didMoveToParentViewController:self]; }
Не забудьте указать идентификатор раскадровки для вашего UITableViewController со статическими ячейками.
Я знаю, что это старый вопрос, но у меня есть обрывочное решение этой проблемы.
Мне нужно было 3 статические ячейки на UIViewController так что это то, что я сделал:
- перетащите некоторые ячейки таблицы в свой интерфейс (не в UITableView) - добавьте текст и все, что вам нужно.
- сделайте свойства IBOutlet для ваших клеток и синтезируйте их.
- перетащите кнопку и сделать его охватить всю ячейку. Установите кнопку для ввода "Custom", чтобы она отображалась невидимый-повторите для всех ячеек
- добавить цифровые теги к кнопкам
реализовать следующие функции. buttonDown подключается к событию кнопки "Touch Down". buttonUp подключается к 'Touch Up Inside'и 'Подправить Снаружи'
-(IBAction)buttonDown:(id)sender { if ([sender tag] == 1) { myFirstCell.selected = YES; } else if ([sender tag] == 2) { mySecondCell.selected = YES; } else if ([sender tag] == 3) { myThirdCell.selected = YES; } } -(IBAction)buttonUp:(id)sender { myFirstCell.selected = NO; mySecondCell.selected = NO; myThirdCell.selected = NO; }
вы можете делать все, что вам нравится в событии buttonDown и использовать кнопку, чтобы перейти непосредственно к новому виду. Я нахожу это довольно полезным.
Я не уверен, что вы подразумеваете под статическими ячейками, но если вы пытаетесь построить ячейки В IB, а затем хотите использовать его в своем tableView, что вы могли бы сделать в своем
cellForRowAtIndex
можно назватьloadNibNamed
передача имени .файл nib, созданный для ячеек в качестве параметра. Убедитесь, что у вас естьoutlet
в вашем viewController, который сопоставляется с ячейкой .перо. Попробуйте исследовать в этих направлениях, если это то, что вы пытаетесь достичь