【问题标题】:How to open an NSWindowController from another NSWindowController in Cocoa如何在 Cocoa 中从另一个 NSWindowController 打开一个 NSWindowController
【发布时间】:2014-07-03 06:24:23
【问题描述】:
我正在 Xcode5 中为 MacOSX 开发一个可可应用程序,我想通过按一个按钮从当前窗口打开另一个窗口,这是我的代码:
- (IBAction)openWindow:(id)sender {
WindowController *controllerWindow = [[WindowController alloc] initWithWindowNibName:@"WindowController"];
[controllerWindow showWindow:nil];
[[controllerWindow window] makeMainWindow];
}
到目前为止,我可以看到窗口出现了一秒钟然后就消失了,如何正确执行此操作???
【问题讨论】:
标签:
objective-c
macos
cocoa
xcode5
【解决方案1】:
窗口和窗口控制器在此方法范围之外的任何地方都没有强引用。
所以在那之后,他们就会被释放。
通常,您会将窗口控制器添加到某个容器中,例如应用程序委托中的数组。
该数组将保留窗口控制器。
窗口控制器可以挂在窗口上。
将操作方法放在应用程序委托中也很有意义。你的按钮应该只向响应者链发送一个选择器。
【解决方案2】:
使用这个..
创建一个需要打开的新 .h 和 .m 文件,作为 NewWindowController(例如)及其 .xib
点击任何按钮,打开新定义的窗口,只需分配、实例化和呈现..
NewWindowController *controllerWindow = [[NewWindowController alloc] initWithWindowNibName:@"NewWindowController"];
[controllerWindow showWindow:self];