0

背景:

  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 之前完成,那么这意味着您需要在“viewDidLoad”方法的末尾使用“[self.tableView reloadData]”来确保它确实更新?

4

2 回答 2

3

tableView:numberOfRowsInSection:方法可能会被调用,因为您在表格视图上配置了某些内容(可能您已将其添加到其超级视图中),因此它需要知道其指标。它不会突然神奇地自行触发。要么确保在配置 UI 元素之前准备好数据,要么在reloadData接近尾声时调用,但我发现前者更“干净”。

于 2011-03-19T08:43:28.823 回答
0

这是完全正常的......

Call [self.tableView reloadData]

; 在 viewdidload 结束时

于 2011-03-19T09:24:31.507 回答