objective-c - iOS開發如何正確地使用reloadData刷新tableView或collectionView
我想大声告诉你
我想大声告诉你 2017-05-02 09:22:52
0
1
611

最近突然發現之前寫的iOS應用在刷新的時候偶爾會跑潰。
檢查了一下程式碼發現一個bug。導致bug的步驟如下:

  1. 用戶下拉tableview進行刷新。

  2. 將保存資料的NSArray清除。

  3. 取得網路數據,然後再填入NSArray。

正常情況下這樣做並沒有問題。
但是,如果使用者在2和3兩步驟的過程中拖曳tableview,立刻就會奔潰。

分析了一下原因。當我清除NSArray的時候,tableView不會自動去調用numberOfItemsInSection獲取最新的data個數,這時候如果下拉的話,tableview會去調用cellForItemAtIndexPath獲取一個新的cell,這時候,因為data個數為0,cellForItemAtIndexPath訪問data就會出現數組越界的情況。

於是我想講第二步插在第三步中間,就是說獲取完遠程數據的時候,清除NSArray,然後換上新的網絡數據,然後調一下reloadData刷新。

但是這樣還是會有原來那個bug,在呼叫reloadData之前,NSArray的個數和tableView取得到的numberOfItemsInSection是不一樣的。只是這樣比之前的時間間隔更短一些而已。

請問各路大神,你們是如何更新tableView裡面的資料的。如何做到100%安全呢。

我想大声告诉你
我想大声告诉你

全部回覆(1)
迷茫

資料只要改變就應該去刷新tableView
即使是清除內容,做完了也可以刷新一下

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!