2012-11-04 63 views
0

訪問我在一個UIViewController我的頭文件中聲明一個UIView像這樣:的UIView不能從不同的方法

@property (strong, nonatomic) UIView *loadLoading; 

,並啓動ITIN viewDidLoad中:

loadLoading = [[UIView alloc] initWithFrame:self.view.bounds]; 
loadLoading.backgroundColor = [UIColor blueColor]; 
[self.view addSubView:loadLoading]; 

這工作得很好。但在我的程序中的另一點,我想刪除這個子視圖。但由於某種原因,它不會被刪除。

NSLog(@"%@",loadLoading.backgroundColor); 
[loadLoading removeFromSuperview]; 

(我知道它獲取到這一點,並loadLoading是訪問,因爲日誌不工作

+0

你有沒有嘗試'[self.view setNeedsDisplay]''removeFromSuperview'後? – yeesterbunny

+0

@yeesterbunny是仍然沒有工作。這很奇怪。 –

+0

hmm ....這個'removeFromSuperview'究竟在哪裏被調用?你也可以做一個檢查:'if(self.view == loadLoading.superview)// log something' – yeesterbunny

回答

0

如果你所得到的NSLog(@"%@",loadLoading.backgroundColor);工作

那麼這個代碼[self.loadLoading removeFromSuperview];應該是可以工作的,否則會有一些奇怪的bug。

以下是另一種方法: 將標記添加到父視圖時,將標記添加到視圖。

loadLoading = [[UIView alloc] initWithFrame:self.view.bounds]; 
[loadLoading setTag:7]; 

使用該標記從父視圖中刪除它。

[[self.view viewWithTag:7] removeFromSuperView]; 
0

發現此問題。

我沒有提供足夠的細節在我的問題。我從通知中心調用此方法,該方法加載到不同的線程上。所以我不得不第一次做performSelectorOnMainThread哪個工作