Убедитесь, что IBOutlets представления были созданы

У меня есть вид, какие подклассы UIView:

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

IBOutlets указаны в nib, Я также инстанцирую MyView от nib,

Если MyView имеет контроллер вида, я бы использовал viewDidLoad определить когда myLabel а также myButton создаются Однако, это не тот случай, так как MyView создается непосредственно из nib,

Что я должен сделать, чтобы определить, когда два IBOutletв этом случае создаются экземпляры?

2 ответа

Решение

Метод, который вы ищете awakeFromNib():

Инфраструктура загрузки пера отправляет сообщение awakeFromNib каждому объекту, воссозданному из архива пера, но только после загрузки и инициализации всех объектов в архиве. Когда объект получает сообщение awakeFromNib, он гарантирует, что все его соединения с выходом и действием уже установлены.

Воплощать в жизнь awakeFromNib() в вашем MyView class, and it will be called when that view's outlets are connected.

Если вы создаете его из пера, как это

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

розетки будут инициированы сразу после этой линии.

Другие вопросы по тегам