我的ViewController包含
为什么self.view.subviews
只返回一个包含2个元素的数组?
以下是我的Xcode项目的屏幕截图:
修改 我创建了一个包含开关和标签的新Viewcontroller。
我的viewDidLoad()代码:
override func viewDidLoad() {
super.viewDidLoad()
for v in self.view.subviews{
println(v)
}
// Do any additional setup after loading the view.
}
println(v)输出2个UILayoutGuide对象:
<_UILayoutGuide: 0x7c94c450; frame = (0 0; 0 0); hidden = YES; layer = <CALayer: 0x7c94b5c0>> <_UILayoutGuide: 0x7c94c850; frame = (0 0; 0 0); hidden = YES; layer = <CALayer: 0x7c94b1a0>>
(lldb)po [[UIWindow keyWindow] recursiveDescription]输出: http://i.stack.imgur.com/5vbBl.png
答案 0 :(得分:1)
您的子视图尚未加载。您应该在awakeFromNib
或稍后调用的任何方法中运行此代码,例如viewWillLayoutSubviews
。来自文档:
在加载并初始化归档中的所有对象后,将发送
awakeFromNib
消息。当对象收到awakeFromNib
消息时,保证设置其所有插座实例变量。
还有一些细节:
在情节提要板中创建视图控制器时,在Interface Builder中配置的属性将存储在存档中。稍后,当实例化视图控制器时,此存档将加载到内存中并进行处理。 [...]加载存档中的对象后,iOS会对实现此类方法的任何对象调用
awakeFromNib
方法。您可以使用此方法执行任何需要已实例化其他对象的配置步骤。