如何检查 UIView 是否是父视图的子视图
我有一个应用程序,我添加了一个子视图(并根据用户交互删除相同的子视图)。我正在寻找一种方法来检查子视图在任何给定时间是否存在。
例如:
在当前视图 (UIView *viewA
) 中,我添加一个子视图 (UIView *viewB
)。然后我想要一种方法来检查 viewB 是否在任何给定时间显示。
抱歉,如果这不是很清楚,它很难描述。
I have an app which I add a subview to (and remove the same subview based on user interactions). I am looking for a way to check whether the subview is present or not at any given time.
For example:
In the current view (UIView *viewA
) I add a subview (UIView *viewB
). I then want a way of checking whether viewB
is being displayed at any given time.
Sorry if this isn't very clear, it's quite hard to describe.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
UIView
存储其超级视图,并且可以通过superview
-property 只是尝试但更好的方法是使用
隐藏UIView
的 code>-propertyan
UIView
stores its superview and is accessible with thesuperview
-property just tryBut the better approach is to use the
hidden
-property ofUIView
我遇到了同样的问题并咨询了 Apple 文档 并提出了这个优雅的解决方案:
I went through the same issue and consulted Apple Documentation and came up with this elegant solution:
我更新到了 Swift4,非常感谢@Shinnyx 和@thomas。
I updated to Swift4, Thanks a lot to @Shinnyx and @thomas.
这是我放入 appDelegate 中的方法,以便我可以从任何点显示整个子视图层次结构。
用一个只有一个字符的字符串来调用它,它会为你缩进。 (即
[appDelegate viewAllSubviews:self.view Indent:@" "];
)我发现首先清除调试窗格很有用,然后从调试器中调用它,并将其复制到文本编辑器中,例如BBEdit 将显示缩进。
您可以使用主窗口的视图调用它并查看屏幕上的所有内容。
Here's a method I put in the appDelegate so that I can display the entire subview hierarchy from any point.
call it with a string with one character and it will indent for you. (i.e.
[appDelegate viewAllSubviews:self.view Indent:@" "];
)I find it useful to clear the debug pane first, then call this from the debugger, and copy it into a text editor like BBEdit that will show the indents.
You can call it using the mainWindow's view and see everything on your screen.