Как программно закрыть окно в Cocoa Mac?

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

Ответ 1

У 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

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

[self close];
[self release];

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

Ответ 3

Это для тех, кто использует 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.

Ответ 4

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