确保视图的 IBOutlets 已被实例化
Ensure that a view's IBOutlets have been instantiated
我有一个视图是哪个子类 UIView
:
class MyView: UIView {
@IBOutlet weak var myLabel: UILabel!
@IBOutlet weak var myButton: UIButton!
//..
}
IBOutlet
在 nib
中指定。我还从 nib
.
实例化了 MyView
如果 MyView
有一个视图控制器,我会使用 viewDidLoad
来确定 myLabel
和 myButton
何时被实例化。但是,这里不是这种情况,因为 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()
,当连接该视图的插座时将调用它。
我有一个视图是哪个子类 UIView
:
class MyView: UIView {
@IBOutlet weak var myLabel: UILabel!
@IBOutlet weak var myButton: UIButton!
//..
}
IBOutlet
在 nib
中指定。我还从 nib
.
MyView
如果 MyView
有一个视图控制器,我会使用 viewDidLoad
来确定 myLabel
和 myButton
何时被实例化。但是,这里不是这种情况,因为 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()
,当连接该视图的插座时将调用它。