web-dev-qa-db-ja.com

Cocoa Macアプリケーションのボタンクリックで新しいウィンドウを開く方法

Cocoa Macプログラミングのボタンクリックで新しいウィンドウを開く方法を知りたい。助けて。特定のボタンをクリックすると新しいMacウィンドウを開く必要があるMacアプリケーションを実行しています。

33
ShinuShajahan

新しいウィンドウ用に別のクラスを作成する場合の手順は次のとおりです。

  1. NSWindowControllerのサブクラスであるクラスを作成します。 NewWindowController
  2. NewWindowControllerクラスのウィンドウxibを作成します。
  3. ボタンをクリックしてコードとして:

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

Swift:ストーリーボードでWindowController-> Identity inspector-> storyBoardID:fillout:mainWindowに移動します。次に、現在のViewControllerから、ストーリーボード上のボタンを次のメソッドにリンクします。

@IBAction func newWindow(_ sender: Any) {
    let myWindowController = self.storyboard!.instantiateController(withIdentifier: "mainWindow") as! NSWindowController
    myWindowController.showWindow(self)
}
10
Hans
  1. NSWindowControllerのサブクラスであるクラスを作成します。 NewWindowController
  2. NewWindowControllerクラスのウィンドウxibを作成します。
  3. ボタンをクリックしてコードとして:

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

はい。ただし、このコードが何らかのfunc内にある場合、ウィンドウは閉じます。これが解決策です。

blah.h

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

blah.m

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