如何判断我的viewcontroller是否可见并接受事件?

时间:2009-05-12 06:51:31

标签: iphone

我有一个观点,我告诉他更新数据时更新。但有时当视图不可见时数据会发生变化。那么如何检测到viewcontroller是可见的并接受事件呢?我可以添加一个在viewWillAppear和viewWillDisappear中更改的布尔值,但似乎应该有一种直接检测状态的方法...

谢谢, 加里

3 个答案:

答案 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变量更好。