【发布时间】:2010-11-19 02:01:39
【问题描述】:
我正在尝试使用 NSToolbar 编写多面板首选项窗口,这在很多 Mac 应用程序中都可以看到。有一些教程通过以编程方式填充工具栏来做到这一点,但这似乎需要很多“机械”代码,我想通过在 IB 中设置整个工具栏来保存这些代码。每个 NSToolbar 项目调用下面的操作,标签用于选择视图(从同一个 nib 和 IBOutlet 引用):
-(IBAction)changeViewController:(id) sender {
NSToolbarItem *tbi = (NSToolbarItem*)sender;
NSString* label = [tbi label];
NSInteger tag = [tbi tag];
[self displayViewController:tag];
NSWindow* window = [self window];
[window setTitle:label];
}
然后我在每个 NSToolbarItem 上设置 Autovalidates,这将在工具栏项目上提供选中/取消选中的外观。
现在这是我的问题:我无法找到设置初始状态的好方法。在我打开窗口的那一刻,没有选择任何工具栏项目,我也没有得到任何允许我正确选择它的代码的更新。我想出的是这样的:
- (void) awakeFromNib {
[self displayViewController:kGeneralPrefsTag];
NSWindow* window = [self window];
NSToolbar *toolbar = [window toolbar];
[toolbar setSelectedItemIdentifier:@"generalPreferences"];
[window setTitle:@"General"];
}
这都是多余的信息: 1)我需要为此声明工具栏项目的项目标识符 2)我手动复制第一个首选项面板的名称,以便能够设置窗口标题。
有没有更好的方法来初始化工具栏?我如何调用工具栏的第一项,以便它调用 changeViewControllerAction ?
谢谢。
【问题讨论】:
标签: macos preferences nstoolbar