Xcode - “Preference Pane”项目 - 如何访问捆绑包?

Posted

技术标签:

【中文标题】Xcode - “Preference Pane”项目 - 如何访问捆绑包?【英文标题】:Xcode - "Preference Pane" project - how to access bundle? 【发布时间】:2010-12-27 11:40:40 【问题描述】:

我创建了一个“首选项窗格”项目。在这个项目中,我想从我的 bundles 资源文件夹中加载一个图像。这似乎很困难,因为“[NSBundle mainBundle]”似乎返回以下内容:

27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </Applications/System Preferences.app> (loaded)

遍历“[NSBundle allBundles]”显示我的项目包出现了,但似乎没有被加载:

27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Mouse.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Sound.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Spotlight.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/TimeMachine.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </Library/PreferencePanes/DivX.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Trackpad.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/UniversalAccessPref.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Dock.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/DateAndTime.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Keyboard.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/MobileMe.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/FibreChannel.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Appearance.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/DigiHubDiscs.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Ink.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Security.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/EnergySaver.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Speech.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </Users/michael/Library/PreferencePanes/MyPrefPane.prefPane> (loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </Users/michael/Code/MyPrefPane/build/Debug/MyPrefPane.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/SharingPref.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Expose.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/SoftwareUpdate.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/ParentalControls.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/PrintAndFax.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Accounts.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/DesktopScreenEffectsPref.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Bluetooth.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Localization.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/StartupDisk.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Network.prefPane> (not yet loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </Applications/System Preferences.app> (loaded)
27/12/10 9:24:18 PM System Preferences[5076]    NSBundle </System/Library/PreferencePanes/Displays.prefPane> (not yet loaded)

我不确定这里发生了什么。如何访问我的 prefpane 包?

【问题讨论】:

【参考方案1】:

在你的主类中调用 [self bundle] 应该可以做到。

【讨论】:

记录在这里:developer.apple.com/library/mac/documentation/UserExperience/…【参考方案2】:

我认为你必须使用“[NSBundle bundleForClass:[self class]];”。

【讨论】:

【参考方案3】:

答案较晚,但适合寻求完整解决方案的人。如果您的 prefPane 包中有一个名为 red.png 的图像资源,您可以通过调用以下命令来加载该资源:

NSImage *redIndicator = [[self bundle] imageForResource:@"red"];

【讨论】:

以上是关于Xcode - “Preference Pane”项目 - 如何访问捆绑包?的主要内容,如果未能解决你的问题,请参考以下文章

xcode设置ios最高支持

如何在 Xcode 9 中使用 Xcode 服务器?我们是不是需要始终打开 Xcode 9?

XCode 5 和 XCode 5.1 并排

Xcode 4.6 和 Xcode 5 一起安装

使用 xcode 10 后 Xcode 9 找不到资产

我是不是需要卸载 Xcode 4 才能安装 Xcode 5?