Ho creato una nuova applicazione standard vuota utilizzando il modello Xcode. Rimosso la finestra in MainMenu.xib e ho creato una nuova sottoclasse NSWindowController personalizzata con uno xib.Come utilizzare NSWindowController per mostrare una finestra nell'applicazione standard?
Sono stati denominati "WYSunFlowerWindowController.h" e "WYSunFlowerWindowController.m".
E io aggiungerà poi la funzione init come di seguito:
- (id)init
{
NSLog(@"init()");
return [super initWithWindowNibName:@"WYSunFlowerWindowController" owner:self];
}
E il mio file WYAppDelegate.m è come di seguito:
static WYSunFlowerMainWindowController* windowController = nil;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
if (windowController == nil) {
windowController = [[WYSunFlowerMainWindowController alloc] init];
}
[[windowController window] makeKeyAndOrderFront:windowController];
}
E io ho il problema, che la finestra non può mostrare da solo dopo aver lanciato l'app. Qualcuno può dirmi perché? Qualcosa non va nel mio codice?
Sono un novizio in Objective-C e cacao. Quindi penso di fare un errore stupido che non riesco a capire da solo.
UPDATE:
Qui è la mia fonte di progetto. Motivi hanno un aspetto e mi aiutano a capire che cosa è il mio errore.
https://dl.dropbox.com/u/3193707/SunFlower.zip
Hai attivato ARC? Ho scoperto che con ARC il controllore della finestra viene deallocato a meno che non ne faccia una proprietà del Delegato app (sono sicuro che ci sono altri modi per farlo). – sosborn
Sto usando ARC. Rendo WindowController come un campo statico della classe AppDelegate. Penso che non sarà deallocato fino a quando l'app non verrà terminata. – morphinewan