2010-03-26 7 views
14

Я только что заметил, что мой ViewController не вызывает init (см. Ниже), когда он запускается.ViewController init?

-(id)init { 
    self = [super init]; 
    if(self) { 
     NSLog(@"_init: %@", [self class]); 
     otherStuff... 
    } 
    return self; 
} 

Есть причина для этого, или заменить его viewDidLoad

-(void)viewDidLoad { 
    otherStuff .. 
    [super viewDidLoad]; 
} 

ура ГЭРИ

ответ

16

Не заменяется на viewDidLoad. Это просто, что init не вызван initWithNibName:bundle:.

Я просто напишу свой установочный код в viewDidLoad.

+0

Спасибо, Фрэнк! Ваш ответ действительно полезен для меня! – fatuhoku

3

awakeFromNib обычно используется.

0
  • (void) init работает нормально, если вы создаете объект в коде, но вам нужно убедиться, что это тот, который вы вызываете. Не имеет ничего общего с тем, чтобы запрограммировать метод initWithNibName: bundle: method, а затем вызвать другой.
4

Если ваш контроллер представления инициализируется из раскадровки, то вы можете использовать:

- (instancetype)initWithCoder:(NSCoder *)coder 
{ 
    self = [super initWithCoder:coder]; 
    if (self) { 
     // do init here 
    } 
    return self; 
} 
Смежные вопросы