为什么“numberOrRowsInSection”在“viewDidLoad”中途被调用?

时间:2011-03-19 08:36:59

标签: iphone ios uiviewcontroller uitableview viewdidload

背景:

  1. 在我的viewDidLoad中,我将测试日历数据(通过EventKit)加载到iPhone。我注意到当表视图第一次加载时它看不到这些数据。

  2. 当我查看日志消息序列时,我发现它是这样的:

  3. 在此处登录:

    [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
    

    问题(S)

    • 为什么“numberOrRowsInSection”会在“viewDidLoad”中途被调用?我问这是因为这就是我所看到的(这是应该发生的事情吗?)。

    • 如果这是正常的,您无法确定viewDidLoad是否会在numberOrRowsInSection之前完成,那么这意味着您需要在“viewDidLoad”方法的末尾使用“[self.tableView reloadData]”来确保它会更新吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

Call [self.tableView reloadData]

在viewdidload结束时