Какой порядок вызывается 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 и каждый раз получаете один и тот же порядок, следующий выпуск может изменить его.