确保已实例化视图的IBOutlet

时间:2016-08-07 09:15:27

标签: ios swift xib

我有一个子类UIView的视图:

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

IBOutlet中指定了nib。我还从MyView实例化了nib

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

在这种情况下,我该怎样做才能确定何时实例化两个IBOutlet

2 个答案:

答案 0 :(得分:3)

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

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

出口将在此行之后立即启动。

答案 1 :(得分:3)

您正在寻找的方法是awakeFromNib()

  

nib-loading基础结构将awakeFromNib消息发送到从nib归档重新创建的每个对象,但只有在归档中的所有对象都已加载并初始化之后。当一个对象收到一个awakeFromNib消息时,它保证已经建立了所有的插座和动作连接。

dialog.getWindow().getAttributes().gravity= Gravity.RIGHT|Gravity.TOP 课程中实施awakeFromNib(),当该视图的媒体连接时,系统会调用MyView