我有一个基于标签栏和从 Internet 检索的数据的应用程序。主选项卡显示地图,其他选项卡之一显示地图中心点周围的事件,使用UITableView
. 如果用户移动地图然后移动到事件页面,我需要刷新表格中显示的事件列表。为此,我请求事件,viewWillAppear:animated:
并在完成时(异步)调用表视图的reloadData
方法。
除非用户在选项卡之间快速点击(例如显示事件、移动到地图、移动地图、移动回事件、移动回地图等),否则它的效果非常好。在某些时候,事件数据源 (an NSArray
) 在表视图尝试访问它时被修改。
这里有一个类似的问题:
UITableView Crashes if Data Source Is Updated during Scrolling
该问题的一个解决方案描述了一个高层次的解决方案,这正是我想要的:在更新表时冻结数据源。然而,我不知道什么时候解冻数据源。问题是当表格完成更新时,我找不到任何通知方式。
有任何想法吗?如何在更新表时冻结数据源,然后在更新表后解冻它?