#iphone #cocoa-touch #ios #uitableview
#iPhone #cocoa-touch #iOS #uitableview ( пользовательский просмотр ) #uitableview
Вопрос:
В каком порядке вызываются следующие методы для UITableView?
numberOfSectionsInTableView
numberOfRowsInSection
cellForRowAtIndexPath
heightForRowAtIndexPath
didChangeObject
(NSFetchedResultsController
)
Пожалуйста, укажите любые другие соответствующие методы подключения, которые я, возможно, пропустил.
Ответ №1:
Я бы с осторожностью относился к порядку, в котором вызываются эти методы. Эти методы имеют очень конкретные и завершенные цели. Даже если методы вызываются в определенном порядке прямо сейчас, это не означает, что они всегда будут вызываться в таком порядке, поэтому опасно делать предположения в вашем коде относительно того, в каком порядке они вызываются. Например, cellForRowAtIndexPath вызывается не для всех строк. Он вызывается только для видимых строк, а затем вызывается для дополнительных строк по мере того, как пользователь переходит к ним. Старые строки также уничтожаются по мере того, как они исчезают с экрана, и он снова запросит ячейки, если пользователь прокручивает их обратно.
Итог, поскольку порядок не указан в документации Apple, вы не можете с уверенностью предположить, что они всегда будут вызываться в одном и том же порядке, и, как правило, не стоит делать такие предположения в вашей реализации.
Ответ №2:
В конечном итоге я использовал NSLog
инструкции, чтобы выяснить это, но, к сожалению, не документировал это. Для я понял, что порядок вызова этих функций не имеет значения.
Читая о пакетной вставке, удалении и перезагрузке строк и разделов в руководстве по программированию табличного представления для iOS, я научился обновлять данные перед вставкой строк в табличное представление.