В каком порядке вызываются методы перехвата UITableView?

#iphone #cocoa-touch #ios #uitableview

#iPhone #cocoa-touch #iOS #uitableview ( пользовательский просмотр ) #uitableview

Вопрос:

В каком порядке вызываются следующие методы для UITableView?

  • numberOfSectionsInTableView
  • numberOfRowsInSection
  • cellForRowAtIndexPath
  • heightForRowAtIndexPath
  • didChangeObject ( NSFetchedResultsController )

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

Ответ №1:

Я бы с осторожностью относился к порядку, в котором вызываются эти методы. Эти методы имеют очень конкретные и завершенные цели. Даже если методы вызываются в определенном порядке прямо сейчас, это не означает, что они всегда будут вызываться в таком порядке, поэтому опасно делать предположения в вашем коде относительно того, в каком порядке они вызываются. Например, cellForRowAtIndexPath вызывается не для всех строк. Он вызывается только для видимых строк, а затем вызывается для дополнительных строк по мере того, как пользователь переходит к ним. Старые строки также уничтожаются по мере того, как они исчезают с экрана, и он снова запросит ячейки, если пользователь прокручивает их обратно.

Итог, поскольку порядок не указан в документации Apple, вы не можете с уверенностью предположить, что они всегда будут вызываться в одном и том же порядке, и, как правило, не стоит делать такие предположения в вашей реализации.

Ответ №2:

В конечном итоге я использовал NSLog инструкции, чтобы выяснить это, но, к сожалению, не документировал это. Для я понял, что порядок вызова этих функций не имеет значения.

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