Не делай этого.Это все равно не сработает.tableView:heightForRowAtIndexPath:
вызывается для всех ваших клеток.И cellForRowAtIndexPath:
не будет возвращать ячейки для невидимых indexPaths в любом случае.
Когда tableView:heightForRowAtIndexPath:
вызывается в первый раз (сразу после numberOfSectionsInTableView:
и tableView:numberOfRowsInSection:
), ячейка отсутствует вообще.
Просто проверьте высоту ячейки в конструкторе интерфейсов.Выберите представление UITableViewCell и посмотрите на панель размеров.
Поскольку tableView:heightForRowAtIndexPath:
вызывается для каждой ячейки, вы должны установить высоту ячеек в viewDidLoad, если у вас есть только одна высота.Если tableView:heightForRowAtIndexPath:
не реализован, он не вызывается, что хорошо, если у вас много ячеек.
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.rowHeight = 44.0f;
}
Если у вас разные высоты, определите высоту из вашего источника данных.Например, проверьте объект в indexPath из NSAray вашего dataSource и используйте ту же логику, которую вы используете в tableView:cellForRowAtIndexPath:
, чтобы выяснить, какую ячейку использовать.Затем верните соответствующую высоту.
РЕДАКТИРОВАТЬ: я только что проверил и запрос tableView для ячейки в tableView:heightForRowAtIndexPath:
вызывает бесконечный цикл.