在UITableView上重新加载未显示的数据

问题描述:

在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) 
     } 

    } 

我不知道为什么这个问题发生了什么,并希望有人也许能够照到了我的观察之前的一些光(小区中随机清除的内容,然后重新出现在以后每次重装)

reloadRowsAtIndexPaths()总是尝试某种形式的动画,.None只是告诉它使用默认的动画(请参阅docs)。这可能与您的单元格的tableView内容不可见有关。

如果tableView不在屏幕上,请尝试reloadData或使用cellForRowAtIndexPath手动检索单元格以编辑其内容。

如果用户不需要指示内容已更改,则文档会提示后面的内容。