如何在Cocoa中从另一个NSWindowController打开一个NSWindowController

问题描述 投票:0回答:2

我正在 Xcode5 中为 MacOSX 使用 cocoa 开发一个应用程序,我想通过按按钮从当前窗口打开另一个窗口,这是我的代码:

- (IBAction)openWindow:(id)sender {

    WindowController *controllerWindow = [[WindowController alloc] initWithWindowNibName:@"WindowController"];
    [controllerWindow showWindow:nil];
    [[controllerWindow window] makeMainWindow];
    }

到目前为止,我可以看到窗口出现一秒钟,然后就消失了,如何正确执行此操作???

objective-c macos cocoa xcode5
2个回答
6
投票

窗口和窗口控制器在该方法范围之外的任何地方都没有强引用。 所以在那之后,他们就被释放了。

通常,您会将窗口控制器添加到某个容器中,例如应用程序委托中的数组。 该数组将保留窗口控制器。 窗户控制器可以挂在窗户上。

将操作方法放在应用程序委托中也是有意义的。该按钮应该只向响应者链发送一个选择器(响应者链的松散耦合很可爱)。


0
投票

用这个..

创建一个需要打开的新 .h 和 .m 文件,作为 NewWindowController (例如)及其 .xib

单击任何按钮,打开新定义的窗口,只需分配、实例化和呈现..

NewWindowController *controllerWindow = [[NewWindowController alloc] initWithWindowNibName:@"NewWindowController"];
[controllerWindow showWindow:self];
© www.soinside.com 2019 - 2024. All rights reserved.