为什么我的ViewControllers view.subviews计数不正确?

时间:2014-12-29 19:52:28

标签: xcode swift viewcontroller subviews

我的ViewController包含

  • 标签
  • 一个按钮
  • 4 imageviews
  • 2 textfields

为什么self.view.subviews只返回一个包含2个元素的数组?

以下是我的Xcode项目的屏幕截图:

Screenshot

修改 我创建了一个包含开关和标签的新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 http://i.stack.imgur.com/5vbBl.png

1 个答案:

答案 0 :(得分:1)

您的子视图尚未加载。您应该在awakeFromNib或稍后调用的任何方法中运行此代码,例如viewWillLayoutSubviews。来自文档:

  

在加载并初始化归档中的所有对象后,将发送awakeFromNib消息。当对象收到awakeFromNib消息时,保证设置其所有插座实例变量。

还有一些细节:

  

在情节提要板中创建视图控制器时,在Interface Builder中配置的属性将存储在存档中。稍后,当实例化视图控制器时,此存档将加载到内存中并进行处理。 [...]加载存档中的对象后,iOS会对实现此类方法的任何对象调用awakeFromNib方法。您可以使用此方法执行任何需要已实例化其他对象的配置步骤。