在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手动检索单元格以编辑其内容。
如果用户不需要指示内容已更改,则文档会提示后面的内容。