Есть ли что-нибудь похожее на viewDidLoad из UIViewController для _3 _ ??? Мне нужно получить уведомление, как только загрузится UIView (подкласс UIView), и выполнить некоторые действия.
UIView - как получить уведомление, когда представление загружено?
Ответы (1)
В зависимости от того, какие действия вам нужно выполнить, существует несколько приемов:
-(id)initWithFrame:(CGRect)frame- назначенный инициализатор UIView; всегда отправляется в UIView для его инициализации, если только представление не загружается из пера;-(id)initWithCoder:(NSCoder *)coder- всегда отправляется для инициализации UIView всякий раз, когда представление загружается из пера;-(void)awakeFromNib- отправляется после того, как все объекты в пике инициализированы и подключены; применимо, только если вы загружаете объект из пера; вы должны позвонить супер;-(void)willMoveToSuperview:(UIView *)newSuperview- отправляется непосредственно перед добавлением представления в качестве подпредставления к другому представлению;newSuperviewможет быть нулевым, когда вы удаляете представление из его супервизора;-(void)willMoveToWindow:(UIWindow *)newWindow- отправляется непосредственно перед добавлением представления (или его супервизора) в окно;newWindowможет быть нулевым, когда вы убираете представление из окна;-(void)didMoveToSuperview- отправляется сразу после вставки представления в иерархию представлений;-(void)didMoveToWindow- отправляется сразу после того, как представление получает набор свойств окна. -
По сути, вы можете выполнять свои действия во время инициализации (1 и 2), после загрузки из пера (3), перед вставкой в иерархию представлений (4 и 5) и после этого (6 и 7).
person
Costique
schedule
21.12.2010
Большое спасибо, отличный ответ (очень подробный). Я изменял сегментированный элемент управления, и он не отображал изменения, потому что я вызывал метод модификации во время инициализации, я переместил его в didMoveToWindow, и он устранил все проблемы.
- person aryaxt; 21.12.2010
Кажется, все это произошло до viewDidLoad в viewController
- person Alex Chan; 17.04.2015
-(void)willMoveToSuperview:(UIView *)newSuperview был лекарством от всех моих проблем, большое вам спасибо!
- person Erion S; 15.07.2015
Я снова забыл, что некоторые вещи не работают, если вы продолжаете вызывать их внутри UIView в самом начале процесса инициализации ..... Так что выполнение этого в 7 или выполнение с задержкой оттуда всегда будет работать! :)
- person Alex Cio; 04.12.2016