我有一个观点,我告诉他更新数据时更新。但有时当视图不可见时数据会发生变化。那么如何检测到viewcontroller是可见的并接受事件呢?我可以添加一个在viewWillAppear和viewWillDisappear中更改的布尔值,但似乎应该有一种直接检测状态的方法...
谢谢, 加里
答案 0 :(得分:12)
简答:如果你使用的是UINavigationController,你可以使用它的visibleViewController,这样你就不必跟踪一个单独的布尔值。
长答案:通常当我发现自己在viewWillAppear中调用reloadData时,这表明我的View需要观察模型的其他部分。 reloadData的问题是它将重新加载整个表。通常,您实际上只需要更新表的一小部分。我的策略通常是只更新我需要的内容,无论当时特定视图是否可见。我知道这是一个非常模糊的回答...也许你的一些示例代码会帮助我更具体......
答案 1 :(得分:1)
如果是桌面视图,您可以执行以下操作:
[(UITableView *)[self view] reloadData];
在viewController的viewWillAppear中。我不确定,不管怎么说,这就是你所要求的。
答案 2 :(得分:0)
您可以检查视图的窗口属性:
- (BOOL)isVisible
{
return view.window != NULL;
}
但我认为保持BOOL
变量更好。