2016-04-27 81 views
0

在IOS中,是否存在重新加載當前未顯示的UITableView的潛在隱患。我發現我有一些非常奇怪的錯誤,其中單元格內容正在消失,但它似乎只在切換到另一個Tab時纔會發生。(具有第一個選項卡上的tableView的UIViewController仍在內存中並響應外部API更新)在UITableView上重新加載未顯示的數據

所以行:

dispatch_async(dispatch_get_main_queue(), { 

    self.tableView.reloadRowsAtIndexPaths([NSIndexPath(forRow: row, inSection: 0)], withRowAnimation: UITableViewRowAnimation.None) 

} 

正在執行代碼來修改未實際顯示一個表的顯示,這是當所述錯誤已發生。

如果我向viewControllers ViewDidAppear和ViewDidDisappear添加了一些代碼以基本阻止對tableView的更新(然後在重新進入該viewController時執行完全刷新),它似乎解決了這個問題。

dispatch_async(dispatch_get_main_queue(), { 

     if self.delegate.viewIsDisplayed() { 
     self.tableView.reloadRowsAtIndexPaths([NSIndexPath(forRow: row, inSection: 0)], withRowAnimation: UITableViewRowAnimation.None) 
     } 

    } 

我不知道爲什麼這個問題發生了什麼,並希望有人也許能夠照到了我的觀察之前的一些光(小區中隨機清除的內容,然後重新出現在以後每次重裝)

回答

0

reloadRowsAtIndexPaths()總是嘗試某種形式的動畫,.None只是告訴它使用默認的動畫(請參閱docs)。這可能與您的單元格的tableView內容不可見有關。

如果tableView不在屏幕上,請嘗試reloadData或使用cellForRowAtIndexPath手動檢索單元格以編輯其內容。

如果用戶不需要指示內容已更改,則文檔會提示後面的內容。