Какъв метод на UIView се извиква, когато се инстанцира от NIB?

Имам прост персонализиран изглед, който е свързан чрез изход към NIB. За този конкретен изглед има действия, които бих искал да извърша върху изгледа, когато е инициализиран, без значение на кой NIB е.

Проблемът е, че нито методите (id)init, нито (id)initWithFrame:(CGRect)frame се извикват в персонализирания изглед.

Кой метод се извиква на 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: Да, когато се зареди nib файл, всеки обект в nib файла, който е деархивиран (с изключение на прокси обекти – тъй като те всъщност не са деархивирани от nib) ще бъде изпратено съобщение awakeFromNib, след като всички обекти бъдат деархивирани и всички изходи са окабелени. - person Jason Coco; 18.04.2010