В каком порядке вызываются методы ловушки UITableView? - PullRequest
7 голосов
/ 07 апреля 2011

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

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

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

Ответы [ 2 ]

12 голосов
/ 07 апреля 2011

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

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

2 голосов
/ 07 апреля 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...