如果拥有自定义UIButton
类,并希望在初始化后访问其titleLabel
插座。通常会在viewDidLoad
方法中执行此操作,但这仅适用于Controller类。初始化后如何直接访问基类的任何插座?
这里有一个小代码片段,因为大多数时候事后都会更清楚
- (id) initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
// Here the outlet is still 'nil'
}
return self;
}
- (void) viewDidLoad {
// Not usable with UIControls
}
答案 0 :(得分:2)
在-awakeFromNib
子类中实施UIButton
。
nib-loading基础结构将awakeFromNib消息发送到从nib归档重新创建的每个对象,但只有在归档中的所有对象都已加载并初始化之后。当一个对象收到一个awakeFromNib消息时,它保证已经建立了所有的插座和动作连接。
您必须调用awakeFromNib的超级实现,以便为父类提供执行所需的任何其他初始化的机会。虽然此方法的默认实现不执行任何操作,但许多UIKit类提供非空实现。您可以在自己的awakeFromNib方法中随时调用超级实现。