How can I programmatically close a window in cocoa mac ? I have opened a second window/xib from the first window/xib using button click. I need to close the first window/xib pro
I was looking for this for ages! A simple
[self close];
[self release];
worked for me. :-)
U may use "performClose" action. Choose nib file (your window which u wont closed), open Connections inspector, connect "performClose" action with u button.
Apple has some useful sample code on Nib Loading. It doesn't directly address this question however; the following code does.
@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
This is for someone who is using Swift
and NSStoryBoardSegue
, here is the same way to achieve it
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.