XCode 6 - iOS 8: 如何以编程方式检查视图是否已安装

5

我正在使用界面构建器中的类大小,为不同的大小定义稍微不同的设计。

我的一个视图未安装到特定的大小。这符合预期,但现在我希望能够编程地判断该视图是否已安装。无论它是否被安装,似乎该视图永远不为空,并且我找不到任何可以检查的isInstalled标志。

正确的做法是什么?

3个回答

5

这并不是一个非常好的解决方案,但我还没有找到更好的方案:

文档指出:"未安装视图的运行时对象仍然会被创建。然而,该视图及其相关的约束不会添加到视图层次结构中,并且视图具有无效的 superview 属性"。

因此,测试有效的 superview 可以作为解决方案,但是我发现它必须相对比较晚进行 - 在 viewDidAppear 中。例如,在 viewWillAppear 中 superviews 仍然为空。


0
你可以创建一个扩展来检查UIView是否有父视图。如果已安装,它将返回true;如果没有安装,它将返回false。
extension UIView {
    func isInstalled() -> Bool{
        return (self.superview != nil) ? true : false
    }
}

0

来自Apple Docs:为大小类安装和卸载视图

未安装的视图会创建一个运行时对象。但是,该视图及其相关约束不会添加到视图层次结构中,并且该视图的superview属性为nil。这与隐藏视图不同。隐藏视图和任何相关的约束都在视图层次结构中。

您可以通过评估PossiblyUninstalledView.superView!= nil来进行检查。如果为真,则类正确安装。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接