UITableView过早加载数据......或者太晚了

时间:2010-10-12 14:57:23

标签: iphone objective-c uitableview datasource

我有一个UITableView可以经常更改其数据。 (它只是NSStrings,存储在NSArray中。)

Method 1> [self loadMyArray];
Method 2> [myTable reloadData];

我将把这两种方法放在哪里......所以每次显示视图时都会调用它们?

我假设一些可能的地方是:

viewWillLoad
viewDidLoad
viewWillAppear
viewDidAppear

但我似乎无法找到我需要的位置:每次出现视图时......但是在UITableView构建之前。

如果我将我的2个方法放在“加载”委托中......它不会经常刷新。

如果我将我的2个方法放入“Appear”委托中......我注意到数据被加载了两次。 (浪费)

1 个答案:

答案 0 :(得分:0)

简短的回答是,在99%的情况下,您应始终将[myTableView reloadData]放入viewDidLoad

如果您希望UITableView在从子视图返回UIView时重新加载其数据(例如,您更新了一些数据),那么您需要考虑在UITableView中使用的是什么。大多数时候,我使用NSFetchedResultsController,它有自己的方法来处理数据更新。但是,有时我需要在重新加载UITableView时更新其他类型的数据。以下是我处理它的方式:我将[myTableView reloadData]放在viewDidLoad中,而不是viewWillAppear

如果出于某种原因,表格需要很长时间才能加载并且在显示数据之前显示空白表格,我会研究使用Instruments分析数据加载功能,也许真正的问题是你需要优化功能,所以它需要更少的时间。