ios如何删除自定义的某个UIView

时间:2012-02-20 18:59:46

标签: ios uiview

我有一个带有alpha 0.5的自定义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];

1 个答案:

答案 0 :(得分:3)

您无法获得预期,因为您无论如何都要实例化新视图。根本不会标记新视图(标记属性将设置为零),因此您可以获得该结果。

您真正想要做的是尝试使用viewWithTag从现有的viewController视图中获取视图实例,如下所示。然后你检查你是否真的有一个匹配的视图。只有当您没有获得有效视图(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;
}

...