2010-02-18 54 views
4

我是通过切换隐藏的属性在两个视图之间切换。如何知道一个视图何时隐藏和/或可见?如何知道UIView何时完全隐藏?

尝试设置断点到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下子视图的子视图。苹果文档告诉说,该设置是不自然的,并且一些自动通知必须手动完成。这是否与未获得应该与隐藏状态相关的becomeFirstResponder和resignFirstResponder相同?

回答

3

猜猜苹果文档是正确的 - 或至少提供一种方法来解决问题。因为我没有在子视图,系统就会自动通知,但我做什么,我只是“前进”的通知由我让他们在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]; 
} 

不知道,如果这是“正确”的方式,但它作品。下一个问题,请!

3

一个选项是使用Key-Value Observation来观察任一视图的hidden属性。当更改被触发时,您会收到有关更改的消息。

+0

必须检查,thanx! – JOM 2010-02-18 15:32:20

+0

只是为了更新:好主意,但我无法使用它,因为从一个标签切换到另一个标签不会更改隐藏属性。我可以自己改变它,但调用viewWillAppear/viewWillDisappear是更容易的选择。不管怎样,不得不回想一下键值观察! – JOM 2010-02-25 15:14:39