Domanda

Sto cercando di aprire una finestra dall'altra usando makeKeyAndOrderFront. Viene visualizzata la nuova finestra, ma non riceve lo stato attivo.

Il codice per la finestra principale è:

#import "SecondWindowController.h"
@implementation FirstWindowController
-(IBAction)showSecondWindow:(id)sender
{
  if (!secondWindowController)
    secondWindowController = [[SecondWindowController alloc] init];
  [[secondWindowController window] makeKeyAndOrderFront:self];
}

SecondWindowController è un NSWindowController, come segue:

@implementation SecondWindowController
-(id)init
{
  if (![super initWithWindowNibName:@"SecondWindow"])
    return nil;
  return self;
}

Ho anche provato a mettere [secondWindowController showWindow: self] prima di makeKeyAndOrderFront ma non fa differenza.

È stato utile?

Soluzione

Hai verificato che l'uscita della finestra per SecondWindowController sia collegata alla finestra nel tuo NIB? La finestra potrebbe essere visualizzata semplicemente caricando il NIB, anche se la presa non è collegata.

Altri suggerimenti

Stai usando una finestra senza bordi? In tal caso, devi sostituire canBecomeKeyWindow e restituire YES

Prova questo:

if (!secondWindowController)
    secondWindowController = [[SecondWindowController alloc] init];    
NSApplication *thisApp = [NSApplication sharedApplication];
[thisApp activateIgnoringOtherApps:YES];
[[secondWindowController window] makeKeyAndOrderFront:self];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top