web-dev-qa-db-fra.com

Comment ouvrir une nouvelle fenêtre sur un clic de bouton dans Cocoa Mac Application?

Je veux savoir comment ouvrir une nouvelle fenêtre sur un clic de bouton dans la programmation Cocoa Mac. Aidez moi. Je fais une application mac qui doit ouvrir une nouvelle fenêtre mac sur un clic de bouton particulier.

34
ShinuShajahan

Si vous souhaitez créer une classe distincte pour une nouvelle fenêtre, voici les étapes:

  1. Créez une classe qui est une sous-classe de NSWindowController, par ex. NewWindowController
  2. Créez une fenêtre xib pour la classe NewWindowController.
  3. Sur le bouton, cliquez sur le code comme:

    NewWindowController *windowController = [[NewWindowController alloc] initWithWindowNibName:@"You Window XIB Name"];
    [windowController showWindow:self];
    
45
iPhoneDv
NSWindowController * wc=[[NSWindowController alloc] initWithWindowNibName:@"your_nib_name"];
[wc showWindow:self];
13
Saurabh

Swift: Dans votre storyboard, allez dans WindowController -> Inspecteur d'identité -> storyBoardID: fill out: mainWindow. Ensuite, à partir de votre Viewcontroller actuel, liez le bouton du storyboard à la méthode suivante:

@IBAction func newWindow(_ sender: Any) {
    let myWindowController = self.storyboard!.instantiateController(withIdentifier: "mainWindow") as! NSWindowController
    myWindowController.showWindow(self)
}
11
Hans
  1. Créez une classe qui est une sous-classe de NSWindowController, par ex. NewWindowController
  2. Créez une fenêtre xib pour la classe NewWindowController.
  3. Sur le bouton, cliquez sur le code comme:

    NewWindowController *controllerWindow = [[NewWindowController alloc] initWithWindowNibName:@"You Window XIB Name"]; [controllerWindow showWindow:self];

Oui, mais la fenêtre se ferme si ce code est à l'intérieur de certaines fonctions. Voici la solution.

Dans blah.h

@interface blah : NSObject {
     ...
     NewWindowController *controllerWindow;
     ...
}

Dans blah.m

@implementation
...
   -(IBAction)openNewWindow:(id)sender {
       controllerWindow = [[NewWindowController alloc] initWithWindowNibName:@"You Window XIB Name"];
       [controllerWindow showWindow:self];
    }
...
7
WildMassacre