如何在Cocoa Mac中以编程方式关闭窗口?

时间:2011-04-08 07:03:38

标签: objective-c cocoa macos window xib

如何以编程方式关闭cocoa mac中的窗口?我已经使用按钮单击从第一个窗口/ xib打开了第二个窗口/ xib。我需要在打开或单击按钮时以编程方式关闭第一个窗口/ xib。我怎样才能做到这一点?

4 个答案:

答案 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)

这适用于使用SwiftNSStoryBoardSegue的人,实现目标的方法与此相同

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”动作。