Статические ячейки раскадровки: dequeueReusableCellWithIdentifier возвращает nil

Используя раскадровку, статические ячейки, в cellForRowAtIndexPath:строка

UITableViewCell *cell = 
   [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

всегда возвращает nil.

Я проверил следующее:

  • Идентификатор ячейки правильно установлен в IB/Storyboard, и я использую тот же идентификатор в коде. Я убедился в этом много раз.
  • Я не создавал экземпляр контроллера представления где-либо еще (что было проблемой в этом вопросе о переполнении стека).

Мой контроллер представления является подклассом UITableViewController, конечно, заключенным в специальныйнавигационный контроллер в раскадровке. Подозревая, что мой контроллер представления каким-то образом не знает об идентификаторах ячеек, определенных в раскадровке, потому что это может быть другой экземпляр, вот код, который «создает» его. В prepareForSegue:я использую

CustomViewController *vc = [[[segue destinationViewController] 
   viewControllers] objectAtIndex:0];

Другие настройки контроллера представления, выполненные здесь (настройка свойств и т. д.), работают нормально.

Я использую статические ячейки, потому что количество разделов и строк не меняется, и каждая ячейка содержит статический текст (и другие элементы управления или текстовые поля, которые нужно редактировать).

Мне кажется, что это очень распространенная задача (настроить статические ячейки из раскадровки в методах источника данных контроллера представления). Что я делаю не так?

21
задан Community 23 May 2017 в 10:31
поделиться