2012-03-14 68 views
1

何时是在UITableView上调用[reloadData]的最佳时机? viewDidAppear或viewWillAppear?如果一个视图被卸载,底层的tableview也会被卸载吗?UITableView reloadData最佳实践

我问的原因是由于我看到的一些行为。假设一个视图被要求重新加载它的数据源,但在视图完成之前被释放。一个场景将与一个UITabBarController并导航到不同的视图,而不是被选中的ViewController。所以会发生什么viewWillAppear被调用,但viewDidAppear没有(因为我导航了)。因此,ViewController会取消分配(连同其模型数据),但是如果我在viewWillAppear中调用reloadData,则会调用“cellForRow”和“numberOfRows”方法,从而导致“解除分配的实例”错误。那有意义吗?您是否通常会在代码中检查nil,如果在请求显示视图时可以更改模型?

+0

它真的有点取决于你想要达到的目标。 – Gobot 2012-03-14 19:40:49

+0

嗯,我猜这种导致了我在iOS上看到的一些行为。假设您的模型数据可以在每次出现视图时更改(客户数据存储在客户端的会话中)。 – Clay 2012-03-14 20:05:37

+0

什么是释放?表视图通常不会因为您导航到另一个选项卡而从内存中删除,并且视图控制器本身不会因为视图被卸载而被取消分配。你看到什么崩溃? – jrturton 2012-03-15 07:32:17

回答

0

你从服务器获取数据源之前或任何地方,你可以用一个blankcell显示的实现代码如下(你可以画一个小区某事像404网页) ,当你获得数据时,然后重新加载tableview。 记得要将空白单元格的单元格数设置为1