Какой метод UIView вызывается при создании экземпляра из NIB?

У меня есть простой пользовательский вид, который подключен через розетку к NIB. Для этого конкретного представления есть действия, которые я хотел бы выполнить с представлением, когда оно инициализировано, независимо от того, на каком NIB оно находится.

Проблема в том, что ни (id) init, ни (id) initWithFrame: (CGRect) методы фрейма не вызываются в пользовательском представлении.

Какой метод вызывается в UIView, когда он создается из NIB? Я бы просто использовал контроллер представления и метод viewDidLoad, за исключением того, что это конкретное представление появляется во многих различных NIB.


person Community    schedule 18.04.2010    source источник


Ответы (1)


Вы можете использовать awakeFromNib для такой инициализации. Обычные методы инициализации вызываются, когда объект фактически создается IB, а затем архивируется с использованием NSCoding, поэтому эти методы никогда не вызываются в вашем приложении. Вы также можете переопределить initWithCoder:, который будет вызываться, но я не рекомендую это, поскольку другие выходы могут не быть подключены в этот момент.

person Jason Coco    schedule 18.04.2010
comment
Идеально! Почему-то я думал, что awakeFromNib ограничен UIViewController - это еще раз доказывает, что иногда все, что требуется, - это вторая пара глаз :) - person ; 18.04.2010
comment
@retailevolved: Да, когда загружается файл пера, каждому объекту в файле пера, который разархивирован (кроме прокси-объектов - поскольку они фактически не разархивированы из пера), будет отправлено сообщение awakeFromNib после того, как все объекты будут разархивированы и все розетки были подключены. - person Jason Coco; 18.04.2010