在 AViewController 中有一个UITableView包含一些数据,调用
[self.navigationController pushViewController:bViewController animated:YES]
推送 bViewController ,在 bViewController 中执行某些操作后, aViewController 中选择的单元格将更改某些信息(例如更新读取计数) )。
我的解决方案:
现在我遇到了这个问题:
大部分时间没有问题,但有时候应用程序会崩溃,问题是
带有indexPath的 aViewContrller 中的单元格(来自bViewController发布的通知)**是不可见的。
答案 0 :(得分:1)
您可以在viewDidAppeare方法中重新加载整个表视图。 每次从bViewController返回时都会有效。
或者只是为了记住性能,您只能重新加载可见的行:
[tableView reloadRowsAtIndexPaths:[tableView indexPathsForVisibleRows]
withRowAnimation:UITableViewRowAnimationNone];
或者甚至只重新加载您进行更改的一个单元格,将[tableView indexPathsForVisibleRows]
替换为包含要重新加载的单元格的索引路径的数组。
答案 1 :(得分:1)
首先,你不应该使用NSNotifications - 它们用于一对多的关系。在您的情况下,您最好采用Delegate Pattern。
此外,您不应更新当前不在屏幕上的表格视图,最好只更新它的数据,当它再次可见时,您可以调用reloadData来对用户可见的数据模型进行更改。