Недавно я разрабатывал твик для Cydia, используя отличный фреймворк (Theos от потрясающего Дастина Хоуэтта), и мне хотелось бы знать, есть ли способ сделать ячейку серой в наборе настроек. настройки. Неважно, потребуется ли для этого частный API, так как это для взломанной среды. Любая помощь, ссылки или ссылки приветствуются. Я использую частный фреймворк (Preferences.framework)
.
Как выделить определенную ячейку в наборе настроек ios (PreferenceLoader) серым цветом?
Ответы (1)
У меня нет с собой взломанного телефона, поэтому я не могу проверить это, но если вы посмотрите на Preferences docs на iphonedevwiki, вы увидите, что есть флаг, который делает элементы настроек серыми (enabled
). Таким образом, вы можете использовать фрагмент кода в файле plist настроек, например:
<dict>
<key>cell</key>
<string>PSSwitchCell</string>
<key>default</key>
<true/>
<key>defaults</key>
<string>com.mycompany.myapp</string>
<key>key</key>
<string>wifi_location</string>
<key>label</key>
<string>WiFi Location</string>
<key>enabled</key>
<false/> <!-- gray out this item -->
</dict>
Если вы посмотрите на документацию по загрузчику настроек, вы увидите, что вы также можете внедрить код в Preferences.app, что, вероятно, позволит вам установить этот флаг динамически (вероятно, необходимо, если вы настраиваете чужое приложение).
Я попытаюсь проверить это позже и, надеюсь, обновлю этот ответ.
person
Nate
schedule
02.02.2013
@SuperDev, верно. Если у вас есть
<key>id</key><string>SomeSpecifierId</string>
в файле plist, то вы, вероятно, сможете получить соответствующий ему PSSpecifier
. Или вы могли бы, вероятно, перебрать все спецификаторы и найти правильный ярлык. Затем в вашем экземпляре PSSpecifier
используйте setProperty:forKey:
, чтобы изменить значение (свойство) ключа enabled
на NO
(или, возможно, [NSNumber numberWithBool:NO]
)
- person Nate; 03.02.2013
Я бы так подумал, но глядя на API,
setProperty:
хочет значение id
, поэтому может потребоваться [specifier setProperty: [NSNumber numberWithBool: NO] forKey: @"enabled"]
. Я сейчас переключаюсь между языками и не могу вспомнить, работает ли автоупаковка в Objective-C :/
- person Nate; 03.02.2013
@SuperDev, кроме того, мне не совсем ясно, создаете ли вы этот пакет настроек самостоятельно, чтобы использовать его в своей настройке, или вы настраиваете существующее приложение, в котором уже есть настройки или пакет настроек. Это повлияет на то, как вы доберетесь до этого материала. Но, возможно, вы уже разобрались с этой частью, и вам просто нужно знать, какой код использовать, как только вы правильно подключите свой код к Preferences.app.
- person Nate; 03.02.2013
Если у вас есть более конкретные вопросы, не стесняйтесь задавать их здесь. Однако я не могу общаться в чате, так как это вынуждает меня торчать и постоянно прерываться. Мой последний вопрос заключался в том, чтобы просто проверить, что вы создаете пакет настроек самостоятельно, а не пытаетесь настроить другое приложение. Учитывая, что вы сказали «да», вы сможете следовать руководству по ссылке, которую я разместил, и реализовать свой собственный подкласс
PSListController
. Получите спецификаторы и измените их. Я не уверен, но если изменения не вступят в силу немедленно, вам может понадобиться вызвать функцию updateSpecifiers:withSpecifiers
контроллера.
- person Nate; 04.02.2013
@SuperDev, это связано со ссылками в моем ответе, но я просто подумал, что позволю себе сказать, что это тоже похоже на довольно полное руководство: touchrepo.com/guides/preferencebundles/PreferenceBundles.doc
- person Nate; 04.02.2013