检查以编程方式创建的UIView是否可见

时间:2014-12-30 11:37:42

标签: ios objective-c xcode uiview

vwInfo = [[UIView alloc]initWithFrame:CGRectMake(20, 85, 280, 100)];
[self.view addSubview:vwInfo];

我在按钮上以编程方式创建了一个UIView。当我再次单击它时,我需要检查vwInfo是否可见。我可以使用布尔值来完成此操作。还有其他选项可以执行此操作吗?

4 个答案:

答案 0 :(得分:1)

您可以使用isDescendantOfView检查视图是否存在,但请确保您必须通过vwInfo的超级视图检查视图是否已存在。

if ([vwInfo isDescendantOfView:self.view]) {
    //view already exist in self.view
}
else{
   //view is not exist in self.view.
}

答案 1 :(得分:0)

是不是因为您不想在已经添加UIView时第二次添加UIView? 在这种情况下,您可以在.h(标题)文件UIView *vwInfo;中声明 然后在IBActionUIButton

if(vwInfo == nil) {
   vwInfo = [[UIView alloc]initWithFrame:CGRectMake(20, 85, 280, 100)];
   [self.view addSubview:vwInfo];
}

答案 2 :(得分:0)

您可以查看Tag Functionality。将tag分配给view

UIView * vwInfo = [[UIView alloc]initWithFrame:CGRectMake(20, 85, 280, 100)];
[vwInfo setTag:101];
[self.view addSubview:vwInfo];

Button Click

- (void)buttonClick :(id)sender {

    UIView * viewTemp = (UIView *)[self.view viewWithTag:101];

    if(viewTemp){
        NSLog(@"View is available");
        if([viewTemp isHidden]){
            NSLog(@"Your view is hidden");
        }else{
            NSLog(@"Your view is visible");
        }
    }else{
        NSLog(@"View is not added yet");
    }
}

答案 3 :(得分:0)

可以使用superview属性

访问UIView

if([vwInfo superview]!= nil)

NSLog(@"visible");

否则

NSLog(@"not visible");