UITableView со статическими ячейками не отображается - PullRequest
63 голосов
/ 27 декабря 2011

Я создал новый проект XCode, используя раскадровки (шаблон представления вкладки).Я добавил пару контроллеров представления в свою раскадровку и хотел использовать UITableView со статическими ячейками для одного.Я создал его, но когда я бегу в симуляторе, клетки не появляются.Я ничего не изменил в проекте, кроме этого файла раскадровки.Я показываю скриншоты редактора раскадровки и работающего симулятора.Метка отображается, поэтому представление загружается правильно.Я установил серый цвет фона, чтобы видеть, как загружается talbeview.Все ячейки видны.Я изменил их стиль на Основной, отредактировал этикетку и добавил индикатор раскрытия, вот и все.

simulator xcode

Ответы [ 5 ]

201 голосов
/ 31 марта 2012

Не реализуйте ни один из методов ниже при использовании статического табличного представления:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
}
102 голосов
/ 24 февраля 2012

Как указано на сайте Рэя Вендерлиха (в этом сообщении: Начало раскадровок в iOS 5, часть 2 , раздел «Экран добавления плеера в работе»):

Еще одинЧто касается статических ячеек, они работают только в UITableViewController.Редактор раскадровки позволит вам добавить их в объект табличного представления внутри обычного UIViewController, но это не сработает во время выполнения.Причина этого в том, что UITableViewController предоставляет некоторую дополнительную магию, чтобы заботиться об источнике данных для статических ячеек.Xcode даже не позволяет вам скомпилировать такой проект с сообщением об ошибке: «Недопустимая конфигурация: статические табличные представления действительны только при внедрении в экземпляры UITableViewController».

Была такая же проблема, но это проясняет ситуацию...

34 голосов
/ 27 декабря 2011

Хотите попробовать использовать TableViewController вместо контроллера Generic View?

11 голосов
/ 31 декабря 2013

Вы можете добавить представление контейнера и встроить UITableViewController в этот контейнер.Затем вы можете управлять своими статическими ячейками внутри нового контроллера.

1 голос
/ 06 октября 2014

У меня возникла та же проблема, и исправление, которое работало для меня, состояло в том, чтобы представить статический подкласс UITableViewController с использованием performSegue. Представление старого способа с [[self navigationController] present...] не привело к статическому табличному представлению правильно загружает свои ячейки.

...