我试图在自定义UICollectionView子类中使用self.delegate
。但是,在self.delegate
中尝试使用initWithCoder
时,该值仍为nil
。它会在稍后阶段发生变化,例如在控制器的viewDidLoad
或视图awakeFromNib
中。
在View / Controller生命周期中,此值是否已设置?
我可以安全地使用它的第一个地方在哪里?
答案 0 :(得分:2)
awakeFromNib
是您正在寻找的重点。这是从nib文件实例化的第一个点,您可以保证已经配置了子视图和插座。
答案 1 :(得分:1)
在故事板中创建视图控制器时,您在Interface Builder中配置的属性将序列化为存档。稍后,当实例化视图控制器时,此存档将加载到内存中并进行处理。结果是一组对象,其属性与您在Interface Builder中设置的属性相匹配。通过调用视图控制器的initWithCoder:
方法加载存档。
然后,在实现该方法的任何对象上调用awakeFromNib
方法,在视图之后调用awakeFromNib并分配和初始化其子视图。保证视图将设置其所有插座实例变量。您可以使用此方法执行任何需要已实例化其他对象的配置步骤。有关详细信息,请参阅ViewController programming guide