【问题标题】:Using NSWindowController to manipulate a window使用 NSWindowController 操作窗口
【发布时间】:2009-12-28 08:35:08
【问题描述】:
我有以下代码:
AXWindowController *controller = [[AXWindowController alloc]
initWithWindowNibName:@"ActivateWindow"];
[controller showWindow:nil];
如何使用控制器来更改窗口ActivateWindow(例如更改窗口上的文本等)?分步说明将不胜感激。谢谢!
【问题讨论】:
标签:
objective-c
cocoa
xcode
nswindow
nswindowcontroller
【解决方案1】:
好吧,您的代码中没有处理任何实际的窗口元素,您的代码只是初始化并显示窗口。 (我刚刚快速浏览了一下,所以我假设它有效)
例如,如果您想在窗口中显示文本,最简单的方法是使用NSTextField。
非常简单的说明:
- 将一个标签项从 Interface Builder 库拖放到您的窗口中。
- 将一个按钮项从 Interface Builder 库拖放到您的窗口中。
- 在 XCode 中,在您的窗口控制器中,为您的标签创建一个 IBOutlet,例如消息标签
- 在 XCode 中,在您的窗口控制器中,为您的标签创建一个 IBAction,例如更改标签
- 在 Interface Builder 中,将“对象”拖放到文档中。 (快捷方式 = CMD + 0)
- 在 Identity 选项卡下,将类更改为 AXWindowController。 (快捷方式 = CMD + 6)
- Ctrl+拖动从对象到标签,选择出口messageLabel。
- Ctrl + 从按钮拖动到对象,选择changeLabel。
现在,要在您按下按钮时显示文本,您需要向 changeLabel IBAction 添加代码来执行此操作。
例如[messageLabel setTitleWithMnemonic:@"blah"];
最后,如果您希望它自动显示文本,您不妨在 Interface Builder 中更改标签内容/将代码放在控制器的 windowDidLoad 方法中。
对我来说,这对你来说几乎是最简单的方法。不过,我建议您在深入研究更难的东西之前阅读一些关于 Cocoa 和 Objective-C 的书籍/教程。
【解决方案2】:
当然,您可以在窗口控制器的代码中以编程方式对窗口进行更改。打开 AXWindowController.m 并做任何你想做的事。如果不确切知道您要做什么(如果您只想创建界面,请使用 Interface Builder)或您的经验水平,很难给出更明确的答案。