iOS Storyboard中添加的UIView的superview为nil

iOS superview of UIView added in Storyboard is nil

我 运行 发现我的 UIView 出现一些意外行为,所以我决定打印出一些关于视图及其父视图的信息。当我尝试这样做时,我的 UIViews 的超级视图返回了 nil。

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

1)我的假设错了吗?也就是说,它应该是零吗?如果是这样,最好能解释一下使用Storyboard添加UIView时如何设置视图层次结构,或者一些参考文档

2) 如果它不应该为 nil,那么什么可能使 superview 为 nil?

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

如果视图的尺寸 class 与您 运行 的尺寸不同,就会发生这种情况。通过将 Storyboard 中的大小更改为 W:Any H:Any,您可以包罗所有设备类型。