2012-02-20 5 views
2

私は0.5のカスタムUIViewを持っています。同じタイプの別のビューが表示されたら最初のビューを削除したいのですが、どうすればいいですか?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を使用してビューインスタンスを取得しようとしています。次に、実際に一致するビューがあるかどうかを確認します。有効なビュー(myTranslationnil)を取得していない場合のみ、新しいインスタンスをインスタンス化して適切にタグ付けする必要があります。

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

関連する問題