no iPhone eu faço UIViewController viewDidLoad e escrevo algum código de configuração para configurar a visão.
Mas como posso fazer isso no NSViewController?
Eu tentei com loadView mas não funciona … Talvez eu faça algo errado eu não sei …
PS: Acabei de começar com a programação OSX / iOS, então desculpe se eu pedir algo estúpido 🙁
A partir do OS X 10.10, o viewDidLoad
está disponível e é suportado no NSViewController
.
Antes disso, você tinha que ir por essa pepita nas notas de lançamento do Snow Leopards:
Conselhos para pessoas que estão procurando methods -viewWillLoad e -viewDidLoad no NSViewController
Mesmo que o NSWindowController tenha os methods -windowWillLoad e -windowDidLoad para você replace a class NSViewController introduzida no Mac OS 10.5, não possui os methods -viewWillLoad e -viewDidLoad correspondentes. Você pode replace – [NSViewController loadView] para personalizar o que acontece imediatamente antes ou imediatamente após o carregamento da ponta feito por um controlador de visualização.
Eu descobri em poucos minutos de postar meu comentário. Adicionando minha descoberta como resposta, porque é um exemplo que está faltando nos documentos. O código abaixo fornecerá o método viewDidLoad desejado. É tão fácil de uma forma que eu me pergunto por que a Apple ainda não implementou no OS X.
- (void)viewWillLoad { if([NSViewController instancesRespondToSelector:@selector(viewWillLoad)]) { [super viewWillLoad]; } ... } - (void)viewDidLoad { if([NSViewController instancesRespondToSelector:@selector(viewWillLoad)]) { [super viewDidLoad]; } } - (void)loadView { BOOL ownImp = ![NSViewController instancesRespondToSelector:@selector(viewWillLoad)]; if(ownImp) { [self viewWillLoad]; } [super loadView]; if(ownImp) { [self viewDidLoad]; } }
Fonte original: http://www.cocoabuilder.com/archive/cocoa/195802-garbage-collection-leaks-and-drains.html
A partir do OSX 10.10 (Yosemite), existe agora um -viewDidLoad
, -viewWillAppear
, -viewDidAppear
, -viewWillDisappear
no NSViewController
. Veja WWDC 2014 – Storyboards and Controllers na session OS X para mais informações, para descobrir quando cada um deles é chamado, etc.
Aqui está o bit relevante dos documentos de header 10.10 sobre -viewDidLoad:
Chamado depois que a exibição foi carregada. Para os controladores de visualização criados no código, isso é depois do -loadView. Para os controladores de visualização desarquivados de uma ponta, isso ocorre depois que a visualização é configurada. O padrão não faz nada.
- (void)viewDidLoad NS_AVAILABLE_MAC(10_10);
por que você não tenta isto:
- (void) awakeFromNib{ //setup code NSLog(@"hello there"); }
Parece que em 10.10, viewDidLoad está agora em NSViewController.
hmm na verdade eu também faria isso …
- (void)viewWillLoad { if (! bool_viewwillload) { // execute the code bool_viewwillload = true; } } - (void)viewDidLoad { if (! bool_viewdidload) { // execute the code bool_viewdidload = true; } }
e, em seguida, basta fazer a exibição de carga como esta
- (void)loadView { [self viewWillLoad]; [super loadView]; [self viewDidLoad]; }