0

如果有一个自定义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
}
4

1 回答 1

2

-awakeFromNib在您的子类中实现UIButton

官方文档

nib 加载基础结构向从 nib 存档重新创建的每个对象发送 awakeFromNib 消息,但前提是存档中的所有对象都已加载和初始化。当一个对象收到一个 awakeFromNib 消息时,它保证已经建立了它的所有出口和动作连接。

您必须调用 awakeFromNib 的超级实现,以使父类有机会执行它们需要的任何其他初始化。虽然这个方法的默认实现什么都不做,但是很多 UIKit 类都提供了非空的实现。您可以在您自己的 awakeFromNib 方法中的任何时候调用超级实现。

于 2011-06-15T11:00:19.767 回答