2010-02-18 31 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