2011-10-19 485 views
2

我有一個UIView類,目前我正在使用從類[self removeFromSuperview]中刪除我的視圖。希望那是正確的事情。但是,現在從我的視圖控制器(我將其添加到該視圖)中,我需要知道它何時已經自行移除,以便在發生這種情況時可以調用方法。檢查視圖是否已被刪除?

任何幫助,將不勝感激,謝謝。

回答

1

一般來說,認爲不應該做的事情,如消除本身。這就是視圖控制器的工作。

如果UIView子類可以產生需要更改視圖層次結構的事件,我會爲該視圖定義一個delegate屬性,當發生事件時,調用該代理的方法。然後,當視圖控制器添加視圖時,它將設置本身作爲代表並確定處理該事件的相關方法。

0

你可以有一個委託回調設置控制器作爲視圖的委託。當您要刪除視圖時,請進行委託回調並在您的控制器中實現回調方法。

的「removeFromSuperview」一直向後似乎我... :(

0

我假設你在某種行爲之後進行移除調用,比如按下按鈕之類的東西。如果是這樣的情況下,設置的按鈕代表是視圖控制器,而不是視圖類,並在視圖控制器的動作方法內,呼叫

[yourCustomView removeFromSuperview]; 
0

的最佳選擇是讓控制器刪除鑑於

[self.view removeFromSuperview]; 

,並知道如果除去視圖(或沒有被加入),你可以問

if(![self.view superview]) { 
    //no superview means not in the view hierarchy 
} 
0

不知道你正在使用的SDK - 但我使用的是iOS 5,我只是用跟着m ethod in the superview:

-(void)willRemoveSubview:(UIView *)subview{ 
    if([subview isEqual:someView]){ 
     //do stuff 
    } 
    //you could do some stuff here too 
} 
+0

我還應該注意到我沒有使用接口生成器文件 - 而是使用loadView委託方法加載UIView的自定義子類 –