почему "numberOrRowsInSection" вызывается на полпути через "viewDidLoad"? - PullRequest
0 голосов
/ 19 марта 2011

ФОН:

  1. В моем viewDidLoad я загружаю данные календаря тестирования (через EventKit) в iPhone. Я отмечаю, что когда таблица загружается в первый раз, она не видит эти данные.

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

Вход здесь:

[AppointmentListController viewDidLoad] Starting
[AppointmentListController populateTestData] Populating the test data now
[AppointmentListController tableView:numberOfRowsInSection:] Number of rows = 0
[AppointmentListController viewDidLoad] Loading the existing calendar events
[AppointmentListController viewDidLoad] Ending

Вопрос (ы)

  • Почему «numberOrRowsInSection» вызывается на полпути через «viewDidLoad»? Я спрашиваю это, потому что это то, что я вижу (это то, что должно произойти?).

  • Если это нормально, и вы не можете быть уверены, что viewDidLoad завершится до numberOrRowsInSection, то это будет означать, что вам нужен «[self.tableView reloadData]» в конце вашего метода «viewDidLoad», чтобы убедиться, что это обновление?

Ответы [ 2 ]

2 голосов
/ 19 марта 2011

Метод tableView:numberOfRowsInSection:, вероятно, вызван, потому что вы настроили что-то в своем табличном представлении (возможно, вы добавили его в суперпредставление), и для этого ему необходимо было знать его метрики. Он волшебным образом не срабатывает сам по себе из ниоткуда. Либо обязательно подготовьте свои данные перед настройкой элементов пользовательского интерфейса, либо позвоните reloadData ближе к концу, но я бы обнаружил, что первые будут "чище".

0 голосов
/ 19 марта 2011

Это совершенно нормально ....

Call [self.tableView reloadData]

;в конце viewdidload

...