在Storyboard中添加的UIView的iOS超级视频为零

问题描述:

我遇到了一些意外的行为与我的UIViews,所以我决定打印出一些关于视图和他们的超级视图的信息。当我试图做到这一点时,我的UIViews的超级视图返回nil。在Storyboard中添加的UIView的iOS超级视频为零

我尝试打印出超级视图的UIViews被添加到Storyboard中的视图控制器(通过从对象库中拖放),然后用IBOutlet与视图控制器代码文件连接。另外,在Identity Inspector中已经设置了正确的视图控制器代码文件类。具体来说,我有的观点是UIPickerView,UILabel和UITextField。当我尝试访问这些UIViews的超级视图时,我得到零。我的印象是,当通过故事板添加UIViews时,它们成为视图控制器视图层次结构的一部分。所以我的问题是:

1)我的假设是否错误?那是不是假设为零?如果是这样,当使用Storyboard或一些参考文档添加UIView时,如何获得有关如何设置视图层次结构的说明会很棒。2)如果它不是零,那么可能是什么使超视图零?

如果superviewnil视图不在视图层次结构中。您可能在添加视图之前检查。尝试检查awakeFromNib方法。此时,层次结构已经建立。

+0

哦太棒了!谢谢,现在有道理。 我想在viewDidLoad()方法中获取超级视图,我认为在这一点上的意见还没有建立起来(虽然我暗示从方法名称,他们是哈哈) 我试图获得superviews再次使用按钮IBAction,它的工作时间=) – user3809369 2015-03-25 05:00:19

+0

调用awakeFromNib没有为我工作。我需要以编程方式添加视图到视图加载完成之前的超级视图。为了澄清,我重写了awakeFromNib,名为super.awakeFromNib(),然后添加了我的视图。 – bmjohns 2015-09-09 23:27:38

+0

如果您以编程方式添加视图,awakeFromNib通常不会被调用。这个问题是关于故事板视图 – 2015-09-09 23:28:52

如果将视图添加到与您正在运行的大小不同的大小类,则会发生这种情况。通过改变你的故事板的大小为W:任何H:任何,你对所有设备类型都有全面的了解。

Storyboard Size Classes