2017-04-22 48 views
0

我的問題的標題使得這看起來像是重複的,但它比標題建議的問題複雜得多,所以請在將其標記爲重複之前仔細閱讀此帖。用UIRefresh更新tableview

我有一個tableview使用UIRefresh進行刷新。當tableview刷新時,它從CloudKit獲取信息。作爲這篇文章的第一個答案(Swift pull to reload duplicates objects in table instead of updating),我建議在從CloudKit加載數據之前清除我的舊列表。這意味着,雖然UIRefresh是積極的,我的tableview要經歷三個狀態:

[填入舊數據] - > [沒有數據全部] - > [填充新數據]

如果用戶試圖在第二階段挖掘細胞,毫不奇怪,該應用程序崩潰,因爲我繼續觀看的視圖控制器取決於來自雲端的信息。

我可以想出3個可能的解決方案來解決這個問題,我希望能從更有經驗的iOS程序員那裏得到關於最佳方法的建議(如果有的話)。

1)保存舊的表格列表,以便如果用戶在加載過程的第2階段點擊單元格,我可以以某種方式讓應用程序訪問該列表。

2)當UIRefresh處於活動狀態時,不要讓用戶點擊單元格。 (這似乎是不理想的,因爲我想在某些時候添加一個自動刷新功能。)

3)由於StackOverflow的帖子鏈接到上面提到的第二個答案,所以我只能從雲端最近修改過的項目......但是,我認爲,這對我的情況來說會很麻煩,因爲任何的單元格都可能已被修改,並且在我的情況下,它們都很可能需要刷新。

任何關於最佳實踐的建議都將非常感謝!謝謝!

回答

0

我的解決方案#1似乎工作得很好。不知道是否有缺陷,我還沒有發現,但它似乎工作得很好。

1

我的建議是隻在新數據到達時修改您的數據。立即更換資料後致電tableView.reloadData()