我通过切换隐藏的属性在两个视图之间切换。我怎么知道一个视图何时隐藏和/或可见?
尝试将断点设置为viewDidLoad,viewDidUnload,viewWillAppear,viewWillDisappear,viewDidDisappear,becomeFirstResponder和resignFirstResponder。没有。当我设置hidden = YES / NO。
时,没有一个被调用if (self.aController)
self.aController.view.hidden = YES;
if (self.bController)
self.bController.view.hidden = NO;
[self.bController viewWillAppear:YES];
我自己调用viewWillAppear,因为该视图是UITabBarItem下的视图子视图的子视图。 Apple文档告诉设置不自然,一些自动通知必须手动完成。如果没有得到与隐藏状态相关的yesFirstResponder和resignFirstResponder这是同样的问题吗?
答案 0 :(得分:3)
一种选择是使用Key-Value Observation来观察任一视图的hidden
属性。触发更改后,您将收到有关更改的消息。
答案 1 :(得分:3)
猜猜Apple文档是对的 - 或者至少提供解决问题的一种方法。由于我没有在subViews中获得自动通知,但我确实在mainView中获取了它们,我只是自己“转发”通知:
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// called at tab switch
if (self.aController)
[self.aController viewWillAppear:YES];
if (self.bController)
[self.bController viewWillAppear:YES];
}
- (void) viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
// called at tab switch
if (self.aController)
[self.aController viewWillDisappear:YES];
if (self.bController)
[self.bController viewWillDisappear:YES];
}
不确定,如果这是“正确的”方式,但它确实有效。请问下一个问题!