我有一個UIView類,目前我正在使用從類[self removeFromSuperview]
中刪除我的視圖。希望那是正確的事情。但是,現在從我的視圖控制器(我將其添加到該視圖)中,我需要知道它何時已經自行移除,以便在發生這種情況時可以調用方法。檢查視圖是否已被刪除?
任何幫助,將不勝感激,謝謝。
我有一個UIView類,目前我正在使用從類[self removeFromSuperview]
中刪除我的視圖。希望那是正確的事情。但是,現在從我的視圖控制器(我將其添加到該視圖)中,我需要知道它何時已經自行移除,以便在發生這種情況時可以調用方法。檢查視圖是否已被刪除?
任何幫助,將不勝感激,謝謝。
一般來說,認爲不應該做的事情,如消除本身。這就是視圖控制器的工作。
如果UIView
子類可以產生需要更改視圖層次結構的事件,我會爲該視圖定義一個delegate
屬性,當發生事件時,調用該代理的方法。然後,當視圖控制器添加視圖時,它將設置本身作爲代表並確定處理該事件的相關方法。
你可以有一個委託回調設置控制器作爲視圖的委託。當您要刪除視圖時,請進行委託回調並在您的控制器中實現回調方法。
的「removeFromSuperview」一直向後似乎我... :(
我假設你在某種行爲之後進行移除調用,比如按下按鈕之類的東西。如果是這樣的情況下,設置的按鈕代表是視圖控制器,而不是視圖類,並在視圖控制器的動作方法內,呼叫
[yourCustomView removeFromSuperview];
的最佳選擇是讓控制器刪除鑑於
[self.view removeFromSuperview];
,並知道如果除去視圖(或沒有被加入),你可以問
if(![self.view superview]) {
//no superview means not in the view hierarchy
}
不知道你正在使用的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
}
我還應該注意到我沒有使用接口生成器文件 - 而是使用loadView委託方法加載UIView的自定義子類 –