UIView - Как получить уведомление, когда представление загружается? - PullRequest
74 голосов
/ 21 декабря 2010

Есть ли что-нибудь похожее на viewDidLoad из UIViewController для UIView ???Мне нужно получить уведомление, как только загрузится UIView (подкласс UIView), и выполнить некоторые действия.

1 Ответ

248 голосов
/ 21 декабря 2010

В зависимости от того, какие действия вам нужно выполнить, существует несколько методов:

  1. -(id)initWithFrame:(CGRect)frame - назначенный инициализатор UIView;всегда отправляется в UIView для его инициализации, если только представление не загружается из пера;
  2. -(id)initWithCoder:(NSCoder *)coder - всегда отправляется для инициализации UIView всякий раз, когда представление загружается из пера;
  3. -(void)awakeFromNib - отправляется после инициализации и подключения всех объектов в кончике;применимо, только если вы загружаете объект из кончика;Вы должны вызвать super;
  4. -(void)willMoveToSuperview:(UIView *)newSuperview - отправлено непосредственно перед добавлением представления в качестве подпредставления к другому представлению;newSuperview может равняться нулю при удалении вида из его суперпредставления;
  5. -(void)willMoveToWindow:(UIWindow *)newWindow - отправляется непосредственно перед добавлением вида (или его суперпредставления) в окно;newWindow может быть ноль при удалении представления из окна;
  6. -(void)didMoveToSuperview - отправлено сразу после вставки представления в иерархию представления;
  7. -(void)didMoveToWindow - отправлено сразу послепредставление получает свой набор свойств окна.-

По сути, вы можете выбрать выполнение ваших действий во время инициализации (1 и 2), после загрузки из пера (3), до вставки в иерархию представлений (4 и 5) и после этого.(6 и 7).

...