标签: nspreferencepane

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

我想使用Swift为系统偏好设置应用程序构建OS X Preference Pane插件,但我无法让它工作.

在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述

在此输入图像描述

在此输入图像描述

它只是工作!

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

在此输入图像描述

在此输入图像描述

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

在此输入图像描述

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

系统偏好设置将确认替换首选项窗格,它将安装它,但随后无法加载.

在此输入图像描述

在此输入图像描述

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

在此输入图像描述

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

添加一些使用新类的代码后,需要导入Swift项目伞标题("Prax-Swift.h")以使项目编译,但导入伞标题并不能解决这个问题.

//  Prax.h

#import <PreferencePanes/PreferencePanes.h>
#import "Prax-Swift.h"

@interface Prax : NSPreferencePane

@property PraxObject *ourPrax;

- (void)mainViewDidLoad;

@end
Run Code Online (Sandbox Code Playgroud)

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

//  Prax.swift

import PreferencePanes

class Prax: NSPreferencePane {

    override func mainViewDidLoad() {

    }
}
Run Code Online (Sandbox Code Playgroud)

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

macos xcode nspreferencepane system-preferences swift

11
推荐指数
1
解决办法
2575
查看次数

为什么我的偏好窗格似乎认为它始终是错误的架构?

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

一个模式表对话框说

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

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

is-mbp-bleggiero:MacOS bleggiero$ file My\ App\ Preferences 
My App Preferences: Mach-O 64-bit bundle x86_64
Run Code Online (Sandbox Code Playgroud)

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

我查看了Console.app,我在点击偏好设置面板后看到了这个:

default 16:05:02.162340 -0400   System Preferences  dlopen_preflight failed with dlopen_preflight(/Applications/My Company/My App.app/Contents/PlugIns/My App Preferences.prefPane/Contents/MacOS/My App Preferences): no suitable image found.  Did find:
    /Applications/My Company/My App.app/Contents/PlugIns/My App Preferences.prefPane/Contents/MacOS/My App Preferences: mach-o, but wrong architecture
    /Applications/My Company/My App.app/Contents/PlugIns/My App Preferences.prefPane/Contents/MacOS/My App Preferences: mach-o, but wrong architecture for /Applications/My Company/My App.app/Contents/PlugIns/My App Preferences.prefPane
Run Code Online (Sandbox Code Playgroud)

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

nspreferencepane system-preferences

7
推荐指数
1
解决办法
80
查看次数

如何访问pref窗格包?

我们如何访问Pref Pane Bundle for Mac OS app ??? 我已将图像和其他资源放在pref窗格包中,但我无法使用以下路径:NSString*path = [[NSBundle mainBundle] pathForResource:@"tick"ofType:@"png"];

其中tick.png出现在NewPrefPane.prefPane的resources文件夹中

objective-c nspreferencepane

2
推荐指数
1
解决办法
286
查看次数