Один правильный сценарий, по которому вызывается numberOfRowsInSection
, но cellForRowAtIndexPath
не будет вызываться, - это когда размер или позиционирование таблицы не требуют отображения строк.
Например, скажем, у вас была таблица высотой 20 пикселей, но заголовок для первого раздела был 30 высоким, и вы вернули nil для заголовка (или не реализовали viewForHeaderInSection
). В этом случае строки не будут отображаться, и это будет выглядеть так, как будто таблицы нет.
Я вижу, что вы используете IB. Размер таблицы может быть обманчивым в IB, поскольку он предполагает размеры заголовка и нижнего колонтитула. Я бы запустил фрейм для таблицы, чтобы вы понимали, где это происходит, когда выполняется приложение (в отличие от того, где оно появляется в IB). Я также был бы уверен в том, что вручную и поместите кадр таблицы перед вызовом reloadData. Это разрешит этот действительный случай, когда cellForRowAtIndexPath
не вызывается.