Я боролся с этим причудливым весь день безрезультатно. Раньше я мог просто создать Tweak, используя шаблон Theos Tweak, и добавить к нему PreferenceBundle, создав подпроект с использованием шаблона в его каталоге. Я запускал твик, открывал его страницу в Settings.app, и он озвучивал список спецификаторов (который включает в себя «Awesome Switch 1», если вы его не изменяете).
Другими словами, я бы получил этот экран, просто создав проект, практически не внося изменений:
Теперь, сегодня я создал новый проект таким же образом (сначала создал Tweak, затем проект PreferenceLoader) и безуспешно пытался достичь этого результата.
Я боролся с этим более 6 часов. Я пробовал это на двух устройствах с джейлбрейком. Я удалил и заново установил Theos. Я перезагрузил свой компьютер, я перезагрузил оба устройства, и что бы я ни делал, этот экран не включает его настройки. Он содержит фон, но вообще не содержит спецификаторов.
Plist в настоящее время выглядит так. Мне нужно, чтобы инструмент plist не возвращал синтаксическую ошибку при запуске -lint:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>cell</key>
<string>PSGroupCell</string>
<key>label</key>
<string>Five First Page</string>
</dict>
<dict>
<key>cell</key>
<string>PSSwitchCell</string>
<key>default</key>
<true/>
<key>defaults</key>
<string>s</string>
<key>key</key>
<string>AwesomeSwitch1</string>
<key>label</key>
<string>Awesome Switch 1</string>
</dict>
</array>
<key>title</key>
<string>SomeFive</string>
</dict>
</plist>
(Five.plist. Подпроект PreferenceLoader называется «Пять»).
А настройки .mm выглядят так:
@interface PSListController
-(id)loadSpecifiersFromPlistName:(id)name target:(id)tar;
@end
@interface FiveListController: PSListController
{
id _specifiers;
}
-(id)specifiers;
@end
@implementation FiveListController
- (id)specifiers {
if(_specifiers == nil) {
_specifiers = [[self loadSpecifiersFromPlistName:@"Five" target:self] retain];
}
return _specifiers;
}
@end
// vim:ft=objc
Теперь я знаю, что файл существует и читается правильно, потому что я проверил, существует ли он вручную в /Library/PreferenceBundles, и потому что вы можете изменить ключ заголовка в приведенном выше plist, и он будет отражаться в заголовке панели навигации страницы Preference. Я не уверен, что заставляет его читать заголовок, но не остальные спецификаторы.
Я совершенно ошеломлен этим. Я никогда не видел такого странного поведения с проектами PreferenceLoader, и похоже, что это началось совершенно случайно, так как я не менял никаких настроек Theos или чего-то еще.
Любая помощь в этом будет оценена.
defaults
в моем plist обычно что-то вродеcom.mycompany.myappname
, а не простоs
. (2) Я вижу предустановленные пакеты на своем устройстве под/System/Library/PreferenceBundles/
и не вижу под/Library/PreferenceBundles
. Не уверен, что любой из них имеет значение. - person Nate   schedule 15.05.2013