如何以编程方式关闭cocoa mac中的窗口?我已经使用按钮单击从第一个窗口/ xib打开了第二个窗口/ xib。我需要在打开或单击按钮时以编程方式关闭第一个窗口/ xib。我怎样才能做到这一点?
答案 0 :(得分:15)
Apple在Nib Loading上有一些有用的示例代码。然而,它没有直接解决这个问题;以下代码可以。
@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
答案 1 :(得分:2)
我多年来一直在寻找这个! 一个简单的
[self close];
[self release];
为我工作。 :-)
答案 2 :(得分:1)
这适用于使用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.
答案 3 :(得分:0)
你可以使用“performClose”动作。选择nib文件(你不会关闭的窗口),打开Connections检查器,用u按钮连接“performClose”动作。