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

时间:2014-04-09 00:36:42

标签: objective-c macos cocoa

我想点击第一个窗口上的按钮打开第二个窗口并同时关闭第一个窗口,类似于此窗口。但是按钮处理程序在AppDelegate类中,它没有 [自我关闭] How to close a window programmatically in Cocoa Mac?

如何关闭第一个窗口?我应该为第一个窗口创建另一个xib并从AppDelegate加载吗?

1 个答案:

答案 0 :(得分:1)

如果您的应用代表在第一个窗口中没有IBOutlet ivar或属性,则添加一个然后使用该引用关闭第一个窗口。然后创建新窗口(以编程方式或使用IBOutlet ivar上的makeKeyAndOrderFront方法或属性到第二个窗口(它不应该具有它"在启动时可见"行为设置) )。

// close front window…
NSArray *orderedWindows = [NSApp orderedWindows];
NSWindow *frontWindow = orderedWindows[0];
[frontWindow close];

// create new window…
NSRect windowRect = NSMakeRect(0., 0., 640., 480.);
NSUInteger styleMask =  NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask;
NSWindow * newWindow = [[NSWindow alloc] initWithContentRect:windowRect styleMask:styleMask backing:NSBackingStoreRetained defer:YES];