【问题标题】:At what stage does UIView delegate gets set when using storyboards使用情节提要时 UIView 委托在什么阶段设置
【发布时间】:2014-08-19 20:12:51
【问题描述】:

我正在尝试在自定义 UICollectionView 子类中使用 self.delegate。但是,当尝试在initWithCoder 中使用self.delegate 时,该值仍然是nil。它会在稍后阶段发生变化,例如在控制器的viewDidLoad 或视图的awakeFromNib 中。

在 View/Controller 生命周期中何时设置此值?

我可以安全使用它的第一个地方在哪里?

【问题讨论】:

  • the first answer here。在这种情况下,我只会使用 viewDidLoad。
  • @p4sh4,就我而言,我希望将此逻辑与控制器分开。

标签: ios objective-c uiview uiviewcontroller storyboard


【解决方案1】:

awakeFromNib 是您要寻找的地方。这是从 nib 文件实例化的第一点,您可以保证子视图和插座已配置。

【讨论】:

    【解决方案2】:

    当您在情节提要中创建视图控制器时,您在 Interface Builder 中配置的属性会被序列化为存档。稍后,当视图控制器被实例化时,这个存档被加载到内存中并被处理。结果是一组对象,其属性与您在 Interface Builder 中设置的属性相匹配。通过调用视图控制器的initWithCoder: 方法加载存档。

    然后,在任何实现该方法的对象上调用awakeFromNib 方法,在分配和初始化视图及其子视图之后调用 awakeFromNib。保证视图将设置其所有出口实例变量。您可以使用此方法执行任何需要已实例化其他对象的配置步骤。详情请参考ViewController programming guide

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 2012-01-16
      • 2012-03-27
      • 2016-05-09
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      相关资源
      最近更新 更多