2012-02-20 23 views
2

我有一個定製的UIView alpha 0.5。我想在同一類型的另一個視圖出現時刪除第一個視圖,那麼我該怎麼做?ios如何刪除某個定製的UIView

到目前爲止,我已經寫了這個,我得到的「不可見」所有的時間記錄:

MyCustomView *myTranslation = [[MyCustomView alloc]initWithFrame:CGRectMake(0, 330, 320, 150)]; 

if (myTranslation.tag == 2) 
{ 
    NSLog (@"is shown yes"); 
    [[myTranslation viewWithTag:2] removeFromSuperview]; 

} 

else 
{ 
    NSLog(@"not visible"); 
    myTranslation.tag = 2; 

}  

myTranslation.backgroundColor = [UIColor brownColor]; 

myTranslation.alpha = 0.5; 

myTranslation.opaque = 0.5; 

[self.view addSubview:myTranslation]; 
[myTranslation show]; 
[myTranslation release]; 

回答

3

你沒有得到你所期望的,因爲你是實例在任何情況下一個新的觀點。該新視圖根本不會被標記(標籤屬性將被設置爲零),因此您可以獲得該結果。

你實際上想要做的是試圖從現有viewController的視圖中使用viewWithTag獲得視圖實例,如下所示。然後你檢查你是否真的有一個匹配的視圖。只有當你沒有得到有效的觀點(myTranslation等於nil),你應該實例化一個新的並適當標記它。

MyCustomView *myTranslation = (MyCustomView *)[self.view viewWithTag:2]; 
if (myTranslation != nil) 
{ 
    NSLog (@"is shown yes"); 
    [myTranslation removeFromSuperview]; 
} 
else 
{ 
    myTranslation = [[MyCustomView alloc] initWithFrame:CGRectMake(0, 330, 320, 150)]; 
    NSLog(@"not visible"); 
    myTranslation.tag = 2; 
} 

... 
+0

您的代碼非常完美!感謝您向我解釋代碼背後的邏輯和功能。這很有價值。 – wagashi 2012-02-20 22:17:06