Как программно закрыть окно в Какао Mac? - PullRequest
10 голосов
/ 08 апреля 2011

Как я могу программно закрыть окно в какао Mac?Я открыл второе окно / XIB из первого окна / XIB с помощью нажатия кнопки.Мне нужно программно закрыть первое окно / xib при открытии или нажатии на кнопку.Как я могу это сделать?

Ответы [ 4 ]

15 голосов
/ 08 апреля 2011

Apple имеет несколько полезных примеров кода на Загрузка Nib .Однако это напрямую не решает этот вопрос;следующий код делает.

@interface CloseWindowAppDelegate : NSObject <NSApplicationDelegate> {
    NSWindow *window;
    IBOutlet NSWindow * secondWindow;
    NSNib * secondNib;
}

@property (assign) IBOutlet NSWindow *window;

- (IBAction)openSecondWindow:(id)sender;

- (IBAction)closeSecondWindow:(id)sender;

@end

#import "CloseWindowAppDelegate.h"

@implementation CloseWindowAppDelegate

@synthesize window;

- (IBAction)openSecondWindow:(id)sender {
    secondNib = [[NSNib alloc] initWithNibNamed:@"SecondWindow" bundle:nil];
    [secondNib instantiateNibWithOwner:self topLevelObjects:nil];
    [secondWindow makeKeyAndOrderFront:nil];

}

- (IBAction)closeSecondWindow:(id)sender {
    [secondWindow close];
    [secondNib release];

}

@end
2 голосов
/ 12 июня 2012

Я искал это целую вечность!Простой

[self close];
[self release];

работал на меня.:-)

1 голос
/ 30 марта 2016

Это для тех, кто использует Swift и NSStoryBoardSegue, вот тот же способ достижения этого

NSApplication.sharedApplication().mainWindow?.close() // close current window first
self.performSegueWithIdentifier("id_of_your_segue", sender: self) // open the second view by invoking the segue that is set to connect  two views.
0 голосов
/ 13 июня 2011

U может использовать действие «executeClose».Выберите файл пера (ваше окно, которое вы не закрыли), откройте инспектор соединений, подключите действие «executeClose» с помощью кнопки u.

...