2011-03-19 15 views
0

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

  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 

问题(S)

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

  • 如果这是正常的,你不能肯定的viewDidLoad将numberOrRowsInSection之前完成,那么这将意味着你需要一个“[self.tableView reloadData]”你“的viewDidLoad”方法的末尾,以确保它更新?

回答

2

tableView:numberOfRowsInSection:方法可能调用,因为你对你的表视图配置的东西(maybed您已经将其添加到它的父),并为此需要知道它的指标。它本身并没有神奇地触发蓝色。请确保在配置UI元素之前准备好数据,或者在接近尾声时调用reloadData,但我会发现前者更“清洁”。

+0

OK DarkDust - 这是确定设置UI元素在“viewDidLoad中”的方法,虽然不是吗?在这种情况下,我认为你在“viewDidLoad”中说,在点击UI元素配置行之前先加载你的数据 - 我在这里是否正确理解你? – Greg 2011-03-19 08:51:00

+0

是的,在'viewDidLoad'中设置和配置UI元素非常好。是的,你已经理解了正确的:在viewDidLoad方法中,首先设置非UI数据(只要它们不依赖UI元素中的数据),然后设置UI元素。这样你就不需要自己调用'reloadData',它会在表视图方便的时候被调用,从而防止不必要的方法调用。 – DarkDust 2011-03-19 08:56:40

0

这很正常....

Call [self.tableView reloadData] 

;在viewDidLoad中结束

相关问题