Используя раскадровку, статические ячейки, в cellForRowAtIndexPath:
строку
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
всегда возвращает nil
.
Я проверил следующее:
- Идентификатор ячейки правильно установлен в IB/Storyboard, и я использую тот же идентификатор в коде. Я проверял это много раз.
- Я не создавал экземпляр диспетчера представлений в другом месте (что было проблемой в qaru.site/info/146948/...).
Мой контроллер просмотра - это подкласс UITableViewController
, который, конечно, завернут в специальный навигационный контроллер в раскадровке. Подозревая, что мой диспетчер представлений каким-то образом не знает о идентификаторах ячеек, определенных в раскадровке, потому что это может быть другой экземпляр, вот код, который "создает" его. В prepareForSegue:
я использую
CustomViewController *vc = [[[segue destinationViewController]
viewControllers] objectAtIndex:0];
Другие настройки контроллера просмотра, выполняемые здесь (настройка свойств и т.д.), прекрасны.
Я использую статические ячейки, потому что количество разделов и строк не изменяется, и каждая ячейка содержит статический текст (и другие элементы управления или текстовые поля для редактирования).
Мне кажется, что это очень распространенная задача (настроить статические ячейки из раскадровки в методах данных datasource). Что я делаю неправильно?