我有一个我在界面构建器中定义的NSWindow。我希望这样做,以便当用户单击按钮时,它会打开NSWindow的新实例。我是否必须继承NSWindow或其他东西?
答案 0 :(得分:22)
如果您在IB中创建了窗口并且它位于主nib文件中,则每次按下按钮都无法创建“新实例”。在nib文件中创建对象时,实际上由IB创建实例,然后将其存档到nib文件中,以便获得该实例。假设您的窗口连接到响应按钮单击的同一对象上的名为auxWindow
的变量,并且操作消息名为buttonClick
,您可以执行以下操作来显示它:
-(IBAction)buttonClick:(id)sender {
if(! [auxWindow isVisible] )
[auxWindow makeKeyAndOrderFront:sender];
}
这将使您在IB中定义的辅助窗口出现在屏幕上并成为关键窗口(并且是应用程序中的最前面的窗口)。但请注意,如果您打算重复使用此窗口, 必须 取消选中IB Inspector中关闭时发布的框,否则,下次单击按钮时,您将收到访问冲突。
这是对你的基本问题的简单回答,但是窗口编程可能非常复杂并且通常非常具体(例如,你真的想要一个面板来处理你正在做的事情吗?)...所以我强烈建议您已阅读Window Programming Guide以获取有关此主题的更多信息,然后在遇到问题时在此处提出非常具体的问题。
答案 1 :(得分:4)
将窗口放在自己的nib文件中,然后每次加载nib文件。您应该使用NSWindowController
来加载笔尖,例如NSDocument
。