确保视图的 IBOutlets 已被实例化

Ensure that a view's IBOutlets have been instantiated

我有一个视图是哪个子类 UIView:

class MyView: UIView {
    @IBOutlet weak var myLabel: UILabel!
    @IBOutlet weak var myButton: UIButton!
    //..
}

IBOutletnib 中指定。我还从 nib.

实例化了 MyView

如果 MyView 有一个视图控制器,我会使用 viewDidLoad 来确定 myLabelmyButton 何时被实例化。但是,这里不是这种情况,因为 MyView 是直接从 nib.

实例化的

在这种情况下,我应该如何确定两个 IBOutlet 何时被实例化?

如果你从 nib 创建它,像这样

[[NSBundle mainBundle] loadNibNamed:@"myXib" owner:self options:nil]

插座将在此行之后立即启动。

您要找的方法是awakeFromNib():

The nib-loading infrastructure sends an awakeFromNib message to each object recreated from a nib archive, but only after all the objects in the archive have been loaded and initialized. When an object receives an awakeFromNib message, it is guaranteed to have all its outlet and action connections already established.

在您的 MyView class 中实施 awakeFromNib(),当连接该视图的插座时将调用它。