Подтвердить что ты не робот

Как открыть новое окно при нажатии кнопки в Cocoa приложении Mac?

Я хочу знать, как открыть новое окно при нажатии кнопки в Cocoa Программирование на Mac. Помоги мне. Я делаю приложение mac, которому нужно открыть новое окно макроса при нажатии на конкретную кнопку.

4b9b3361

Ответ 1

Если вы хотите создать отдельный класс для нового окна, выполните следующие действия:

  • Создайте класс, который является подклассом NSWindowController, например. NewWindowController
  • Создайте окно xib для класса NewWindowController.
  • На кнопке щелкните код как:

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

Ответ 2

NSWindowController * wc=[[NSWindowController alloc] initWithWindowNibName:@"your_nib_name"];
[wc showWindow:self];

Ответ 3

  • Создайте класс, который является подклассом NSWindowController, например. NewWindowController
  • Создайте окно xib для класса NewWindowController.
  • На кнопке щелкните код как:

    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];
    }
...

Ответ 4

Swift 3. В своем раскадровке перейдите в WindowController → Identity inspector → storyBoardID: заполните: mainWindow. Затем из вашей текущей ссылки viewcontroller нажмите кнопку на раскадровке следующим образом:

@IBAction func newWindow(_ sender: Any) {
    let myWindowController = self.storyboard!.instantiateController(withIdentifier: "mainWindow") as! NSWindowController
    myWindowController.showWindow(self)
}