使用UIRefresh更新tableview

时间:2017-04-22 20:41:10

标签: ios iphone swift

我的问题的标题使它看起来像一个副本,但它比标题所暗示的问题要复杂得多,所以请在将其标记为重复之前阅读这篇文章。

我有一个使用UIRefresh进行pull-to-refresh的tableview。当tableview刷新时,它从CloudKit获取信息。作为这篇文章的第一个答案(Swift pull to reload duplicates objects in table instead of updating)表明,我在从CloudKit加载数据之前清除了我的旧列表。这意味着,当UIRefresh处于活动状态时,我的tableview会经历三种状态:

[填充旧数据] - > [根本没有数据] - > [填充新数据]

如果用户在第二阶段尝试点击一个单元格,不出所料,应用程序崩溃是因为视图控制器我转向依赖于来自云的信息。

我可以想到这个问题的3个潜在解决方案,我希望从更有经验的iOS程序员那里获得最佳方法的建议(如果有的话)。

1)保存旧表列表,这样如果用户在加载过程的第2阶段点击一个单元格,我可以以某种方式让应用程序访问该列表。

2)当UIRefresh处于活动状态时,不要让用户点击单元格。 (这似乎是不理智的,因为我想在某些时候添加自动刷新功能。)

3)正如StackOverflow帖子在第二个答案中链接到上面提到的那样,我可以从云端下载最近修改过的项目......但是,我认为这对我的情况来说会很混乱,因为任何的单元格都可以被修改,在我的情况下,所有单元格都很可能需要刷新。

对此最佳做法的任何建议将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:1)

我的建议是只在新数据到达时修改您的数据。更换数据后,请立即致电tableView.reloadData()

答案 1 :(得分:0)

我的解决方案#1似乎工作得很好。我不确定它是否存在我尚未发现的陷阱,但似乎效果不错。