Recentemente ho iniziato a studiare Objective-C e ho incontrato un piccolo problema. Sto cercando di utilizzare un controller di visualizzazione personalizzato senza pennino, quindi la vista viene creata nel codice. Il controller di visualizzazione stesso viene creato in AppDelegate.Creazione di un NSViewController personalizzato senza pennino
Quando si esegue il programma, per prima cosa viene visualizzata una finestra vuota predefinita. Dopo aver chiuso questa finestra, viene visualizzata una seconda finestra che contiene correttamente la vista. Ovviamente non voglio che appaia la prima finestra, ma non so cosa lo causi. L'unica informazione che ho trovato su questo argomento è stata per lo sviluppo di iOS, che non è esattamente la stessa cosa.
Inoltre ottengo questo messaggio di cui io non sono davvero sicuro che cosa significa: Impossibile collegare l'orderFrontStandardAboutPanel azione: a bersaglio di classe MainViewController
AppDelegate:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
mainViewController = [[MainViewController alloc] initWithFrame:_window.frame];
_window.contentView = mainViewController.view;
}
MainViewController:
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithNibName:nil bundle:nil];
if (self)
{
[self setView:[[MainView alloc] initWithFrame:frame]];
[self loadView];
}
return self;
}
Immagino che tu stia chiamando loadview 2 volte. 2. loadview esplicitamente. Lo scopo di -loadView è, uh, caricare la vista. Viene chiamato quando si accede alla proprietà della vista del controller della vista e il valore di tale proprietà è nullo. In questo caso, si accede a SetView autonomo nel proprio inizializzatore, quindi è quando viene chiamato loadView. Anche in questo caso stai chiamando loadView in modo specifico. Questa potrebbe essere una delle ragioni per cui vedi la prima volta vuota o mentre iOS sta caricando la tua applicazione per visualizzare l'immagine di caricamento. – Srivathsa
Ecco cosa l'ha causato, grazie! – user2616316
Ok, è stato bello risolvere il tuo problema. Quindi puoi fare un voto per il mio commento. – Srivathsa