问题标签 [nspreferencepane]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3451 浏览

xcode - 将 Swift 与 OS X Preference Pane 插件一起使用

我想使用 Swift 为 System Preferences 应用程序构建一个 OS X Preference Pane 插件,但我无法让它工作。

在此处输入图像描述

单击“下一步”后,Xcode 模板不提供选择 Swift 作为语言的选项,而是自动在 Objective-C 中创建项目。

在此处输入图像描述

无需添加任何代码或执行任何其他操作,项目即可成功构建。如果您右键单击产品并选择“在外部编辑器中打开”,系统首选项将成功安装并加载首选项窗格。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

它只是工作!

很好,但是现在,我想使用 Swift 添加一个新的 Cocoa 子类。

在此处输入图像描述

在此处输入图像描述

接受默认值,并允许它创建桥接头。

在此处输入图像描述

现在,退出系统偏好设置,不添加任何代码,重建项目。和以前一样,右键单击产品并“在外部编辑器中打开”。

System Preferences 将确认替换首选项窗格,并将安装它,但随后无法加载。

在此处输入图像描述

在此处输入图像描述

如果您在 Finder 中显示构建的产品,除了 .prefPane 插件之外,还有一个 .swiftmodule 文件夹。

在此处输入图像描述

我猜在构建阶段或构建设置中缺少一些负责将 .swiftmodule 与捆绑包的其余部分合并的东西,但无法弄清楚。

添加一些使用新类的代码后,需要导入 Swift 项目伞头文件(“Prax-Swift.h”)以使项目编译,但导入伞头文件并不能解决此问题。

我还尝试删除 Prax.h 和 Prax.m 并在 Swift 中简单地实现 NSPreferencePane 子类。和以前一样,项目构建并安装,但系统偏好设置无法加载它。

对不起,如果我在这个问题中使用了太多图片;这似乎是解释问题并使其易于重现的最清晰方法。可能有一个简单的解决方案。有任何想法吗?

0 投票
2 回答
843 浏览

macos - Defining an anchor name within my preference pane

I would like enable AppleScript to reveal a particular tab within a custom preference pane I am developing, so that this works:

I cannot find anywhere how my preference pane would declare or specify the "Foo" anchor or associate that with any particular tab view item.

0 投票
0 回答
256 浏览

swift - PreferencePane 上的 Swift,带有 Cocoa 绑定;我究竟做错了什么?

我正在尝试克隆 RCDefaultApp,因为它是一个很棒的应用程序,遗憾的是 Sierra 杀死了它。

大部分后端已完成;我正在试验界面,一定有一些(或许多事情)我做错了。我已经尝试过几个不同的教程,或多或少是信的,但我无法重现预期的结果。

这是我的偏好窗格的文件所有者:

最初,我试图将数据转储到 NSBrowser 中,但我绝对无法让它工作;总是在运行时因“无法识别的选择器发送到实例......”错误而崩溃,即使我确定一切都正确连接。

包装的属性在那里,因为浏览器希望我绑定到 NSObject。

然后我尝试使用 NSTableView。如果我尝试绑定到 tableview 本身,我会遇到同样的问题。如果我尝试绑定到 Column,它实际上似乎可以工作(尽管由于某种原因它坚持我需要使用 NSString;甚至 String 都不能工作)除了它看起来像这样:

PreferencePane 看起来像……什么?

这是我的阵列控制器的样子。 阵列控制器属性 数组控制器绑定

这是表视图绑定。 Tableview 列绑定

0 投票
0 回答
50 浏览

swift - 为什么我的 Swift 支持的 Preference Pane 无法加载?

我正在尝试为我的应用创建自定义系统偏好设置窗格。但是,当我尝试加载它进行测试时,我在控制台中得到了这个:

似乎 AppKit 的 Swift 包装器无法加载......我确定我需要的东西。那么这里发生了什么,我该如何解决呢?

0 投票
2 回答
97 浏览

system-preferences - 为什么我的 Preference Pane 似乎认为它总是错误的架构?

这已经很好地工作了很长时间。据我所知,我没有改变任何东西......但我不是 100% 确定。我所知道的是,现在我的首选项窗格在我尝试打开它时会显示此错误:

模态表对话框说

当我按 OK 时,它会重新启动并显示相同的对话框。这继续令人作呕。

我检查了二进制文件,file它确认它是一个 64 位可执行文件:

这是……苦乐参半。我可以在网上找到的所有建议都说这个错误意味着必须在 32 位版本的系统偏好设置中加载 32 位偏好设置窗格,据我所知,这不是导致这种症状的原因。

我查看了 Console.app 并在单击首选项窗格后立即看到了这一点:

所以它认为我突然使用了错误的架构......?这里发生了什么?

0 投票
1 回答
202 浏览

objective-c - 从首选项窗格注册登录项的最佳方法?

0 投票
0 回答
212 浏览

nspreferencepane - NSRequiresAquaSystemAppearance 和首选窗格

我有一个系统偏好设置窗格,在 10.14 中运行时,它始终以灯光外观模式打开。在早期系统中编译的普通应用程序可以通过包含一个 plist 参数来使用暗模式:NSRequiresAquaSystemAppearance = NO。

但是,当我在 pref 窗格中将此键添加到我的 Info.plist 时,什么也没有发生。

当暗模式在 10.14 上处于活动状态时,如何在暗模式下打开自定义系统偏好设置窗格?Apple 的默认窗格可以,并且这些 plist 中似乎没有启用它的键。

0 投票
1 回答
256 浏览

xcode - 带有 10.15 和系统完整性保护的调试系统首选项窗格

过去,我已经能够通过自签名系统偏好设置应用程序的副本,并将其设置为 Xcode 中的运行目标,在系统偏好设置中运行/调试自行开发的偏好设置窗格。

一个符号链接放置在 ~/Library/PreferencePanes 中,它指向由 Xcode 构建的输出 prefPane 并且一切正常……至少它曾经在 10.11 到 10.14 下使用。

请参阅:使用 10.11 和系统完整性保护的调试系统首选项窗格

在 10.15 下,这会中断。虽然 prefPane 正确加载了真实的(Apple 签名的)系统偏好设置应用程序,但当我尝试在系统偏好设置的自签名副本中运行我的 prefPane 时,我得到“无法加载偏好设置窗格”。尝试加载任何 Apple 内置的首选面板时也会发生同样的事情。

我都试过了:

控制台中不会产生任何错误。

我的猜测是,在加载过程的某个地方,它正在检查系统偏好设置主机应用程序是否由 Apple 签名。如果我尝试使用真正的系统偏好设置应用程序作为调试目标,我会收到系统完整性保护错误。

有没有像 10.11 到 10.14 那样禁用 SIP 的方法来做到这一点?

0 投票
1 回答
22 浏览

cocoa - 10.15 中的 PrefPane 不会重新打开外部窗口

My Pref Pane 为每个显示打开一个窗口,类似于 Displays PrefPane 的工作方式。当我第一次启动时,操作系统会调用我mainViewDidLoad使用initWithWindowNibName. 这工作正常。

然后在 中willUnselect,我调用[window orderOut:self];每个外部窗口并且它们正确隐藏。例如,如果用户从我的 PrefPane 切换到 Sound 或 Network PrefPane,就会发生这种情况。

当他们回到我的 PrefPane 时,我会willSelect打电话给:

此调用不再有效(它适用于 10.14.6 及更早版本的所有版本,并且可能适用于 10.15 的早期版本,但它肯定在 10.15.6 中损坏)。

我尝试使用其他方法来隐藏/显示窗口,包括[window setIsVisible:]但没有任何方法可以恢复窗口。

我认为这可能与此博客讨论的内容有关:

https://www.noodlesoft.com/blog/2019/08/28/preference-panes-and-catalina/

有没有人看到这个或知道修复它?