如何通过单击按钮在Cocoa中打开启动NSWindow

Sam*_*Lee 4 cocoa

我有一个我在界面构建器中定义的NSWindow.我希望这样做,以便当用户单击按钮时,它会打开NSWindow的新实例.我必须继承NSWindow或其他东西吗?

Jas*_*oco 22

如果您在IB中创建了窗口并且它位于主nib文件中,则每次按下按钮时都无法创建"新实例".在nib文件中创建对象时,实际上由IB创建实例,然后将其存档到nib文件中,以便获得该实例.假设您的窗口连接到auxWindow响应按钮单击的同一对象上命名的变量,并且操作消息已命名buttonClick,您可以执行以下操作来显示它:

-(IBAction)buttonClick:(id)sender {
    if(! [auxWindow isVisible] )
        [auxWindow makeKeyAndOrderFront:sender];
}
Run Code Online (Sandbox Code Playgroud)

这将导致您在IB中定义的辅助窗口出现在屏幕上并成为关键窗口(以及应用程序中最重要的窗口).但请注意,如果您打算重复使用此窗口,则必须取消选中IB Inspector中关于"关闭时释放"的框,否则下次单击按钮时将出现访问冲突.

这是对你的基本问题的简单回答,但是窗口编程可能非常复杂并且通常非常具体(例如,你真的想要一个面板来处理你正在做的事情吗?)...所以我强烈建议你阅读该窗口编程指南关于这一主题的更多信息,然后要求非常具体的问题在这里,当你被卡住.

  • 赞成提及关闭发布选项! (2认同)