将首选项窗格添加到应用程序

时间:2011-02-02 19:43:11

标签: objective-c cocoa macos nspreferencepane

我有一个位于菜单栏的应用程序,非常像这一个 menu app

我正在尝试为它创建一个偏好设置面板,如the apple docs中所述 该指南展示了如何为系统偏好设置和独立应用程序的偏好设置窗口创建prefpane插件。然而,在第二种情况下,它似乎缺少一些东西。

因此,当用户点击菜单中的“首选项...”时,我会调用带有-(IBAction) displayPreferences:(id)sender;操作的主应用程序类。
我还有控制器扩展NSPreferencePane并连接到Interface Builder中的NSWindow对象(就像文档描述一样)。

问题是,如何连接它们?即,

-(IBAction) displayPreferences:(id)sender {
  // what do we write here to display preferences window?
}

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您希望系统偏好设置打开到偏好设置面板,则可以为.prefPane捆绑包创建文件网址,然后将其发送到-[NSWorkspace openURL:]。如果您想明确启动选项,可以使用-[NSWorkspace openURLs:withAppBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifiers:]

答案 1 :(得分:0)

有一种通过苹果脚本打开偏好的简单方法。你走了。

  1. 您必须创建一个按钮操作并将prefernces的出口设置为按钮操作
  2. 然后,只需执行以下Apple脚本即可打开主要sys偏好

    NSString *script = @"tell application \"System Preferences\"\n\tset the current pane to pane \"com.apple.preferences\"\n\tactivate\nend tell";
    
    
    NSAppleScript *appleScript = [[NSAppleScript alloc] initWithSource:script];
    [appleScript executeAndReturnError:nil];
    
  3. 可以根据用户必须导航的位置修改脚本对象。无论是蓝牙设置还是wifi设置。