Какой порядок вызывается heightForRowAtIndexPath?

Я спрашиваю это, потому что я нахожу это странным, что heightForRowAtIndexPath во-первых, работать с последней ячейкой в ​​моем tableView.

Вот что у меня получилось, у меня 13 разделов, в каждом разделе только одна ячейка. Поэтому, когда я позвонил reloadData и войти indexPath.section в heightForRowAtIndexPath, indexPath последнего раздела был напечатан. Затем это началось с секции 0, затем 1, 2, 3, до 11 по порядку.

Это протестировано как на устройстве, так и на симуляторе, а также на iOS 7 и iOS 8.

Это фиксированный порядок или только для случая, который я тестирую?

2 ответа

Если вы используете AutoLayout . Исправьте ограничения правильно. Они могут иметь значение. В iOS * вам даже не нужно использовать -tableView:heightForRowAtIndexPath:,

Apple не указывает порядок, в котором -tableView:heightForRowAtIndexPath: называется.

Это означает, что вы не можете полагаться на какой-либо конкретный заказ. Когда вы звоните -endUpdates или любой из методов перезагрузки / вставки / удаления / перемещения, высоты строк будут пересчитаны. UITableView может использовать специальные знания (например, видимые в данный момент ячейки) и пересчитывать высоту строк в другом порядке.

Хуже того, даже если вы тестируете каждую версию iOS на каждом устройстве Apple и каждый раз получаете один и тот же порядок, следующий выпуск может изменить его.

Другие вопросы по тегам