1

我创建了一个“首选项窗格”项目。在这个项目中,我想从我的 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 包?

4

3 回答 3

2

在你的主类中调用[self bundle]应该这样做。

于 2010-12-27T11:51:34.627 回答
1

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

于 2011-10-27T19:50:11.730 回答
0

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

NSImage *redIndicator = [[self bundle] imageForResource:@"red"];
于 2015-03-24T17:05:20.737 回答