【发布时间】:2014-05-21 23:01:54
【问题描述】:
我想单击第一个窗口上的按钮以打开第二个窗口并同时关闭第一个窗口,类似于此窗口。但是按钮处理程序在 AppDelegate 类中并且它没有 [自我关闭] How to close a window programmatically in Cocoa Mac?
如何关闭第一个窗口?我应该为第一个窗口创建另一个 xib 并从 AppDelegate 加载吗?
【问题讨论】:
标签: objective-c macos cocoa
我想单击第一个窗口上的按钮以打开第二个窗口并同时关闭第一个窗口,类似于此窗口。但是按钮处理程序在 AppDelegate 类中并且它没有 [自我关闭] How to close a window programmatically in Cocoa Mac?
如何关闭第一个窗口?我应该为第一个窗口创建另一个 xib 并从 AppDelegate 加载吗?
【问题讨论】:
标签: objective-c macos cocoa
如果您的应用委托还没有第一个窗口的 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];
【讨论】: