我使用以下代码添加了我的子视图:
self.view.addSubview(noticeSubView)
在某些情况下,我需要在执行其他操作之前检查子视图是否存在。我搜索时找到了以下内容,但不确定这是否是正确的方法以及如何实现。
BOOL doesContain = [self.view.subviews containsObject:pageShadowView];
我感激任何帮助,谢谢。
我使用以下代码添加了我的子视图:
self.view.addSubview(noticeSubView)
在某些情况下,我需要在执行其他操作之前检查子视图是否存在。我搜索时找到了以下内容,但不确定这是否是正确的方法以及如何实现。
BOOL doesContain = [self.view.subviews containsObject:pageShadowView];
我感激任何帮助,谢谢。
if ( noticeSubView.superview === self.view ) {
...
}
三个等号 "===" 确保superview对象是self.view相同的对象,而不是尝试在视图上调用isEqual()方法。
过去人们使用的另一种方法是给子视图设置一个整数标签,如下所示:
noticeSubView.tag = 4
默认为零,因此任何非零值都将是唯一的。
然后,您可以通过标签检查超级视图是否包含特定视图:
if ( self.view?.viewWithTag(4) != nil )
...
}
如果您采用这种方法,您应该为整数值创建一个枚举,以便更清楚地了解您要查找的内容。
注意:在 viewDidLoad
之后视图控制器才会定义视图,因此在 self.view
后面有一个 "?",它确保调用不会发生如果 self.view
返回 .None
noticeSubView
是一个自定义类(我们称之为NoticeSubView
),那么您可以按照以下方式找到它:for view in self.view.subviews {
if let noticeSubView = view as? NoticeSubView {
// Subview exists
}
}
noticeSubView.tag = 99
//...
for view in self.view.subviews {
if view.tag == 99 {
// Subview exists
}
}
查找视图是否存在的最佳且简单的方法是,有许多方法,例如您可以检查超级视图中是否包含视图或者只是查看一些时间,但有时此方法会失败,因为如果Uiview已被删除,则会出现错误,因此代码在这里:这里errorView是我的UiView
errorView.tag = 333
if ( self.view?.viewWithTag(333) != nil ){
print("contain")
}
else {
print("not contain")
}