Как выделить определенную ячейку в наборе настроек ios (PreferenceLoader) серым цветом?

Недавно я разрабатывал твик для Cydia, используя отличный фреймворк (Theos от потрясающего Дастина Хоуэтта), и мне хотелось бы знать, есть ли способ сделать ячейку серой в наборе настроек. настройки. Неважно, потребуется ли для этого частный API, так как это для взломанной среды. Любая помощь, ссылки или ссылки приветствуются. Я использую частный фреймворк (Preferences.framework).


person s6luwJ0A3I    schedule 18.01.2013    source источник


Ответы (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
comment
@SuperDev, верно. Если у вас есть <key>id</key><string>SomeSpecifierId</string> в файле plist, то вы, вероятно, сможете получить соответствующий ему PSSpecifier. Или вы могли бы, вероятно, перебрать все спецификаторы и найти правильный ярлык. Затем в вашем экземпляре PSSpecifier используйте setProperty:forKey:, чтобы изменить значение (свойство) ключа enabled на NO (или, возможно, [NSNumber numberWithBool:NO]) - person Nate; 03.02.2013
comment
Я бы так подумал, но глядя на API, setProperty: хочет значение id, поэтому может потребоваться [specifier setProperty: [NSNumber numberWithBool: NO] forKey: @"enabled"]. Я сейчас переключаюсь между языками и не могу вспомнить, работает ли автоупаковка в Objective-C :/ - person Nate; 03.02.2013
comment
@SuperDev, кроме того, мне не совсем ясно, создаете ли вы этот пакет настроек самостоятельно, чтобы использовать его в своей настройке, или вы настраиваете существующее приложение, в котором уже есть настройки или пакет настроек. Это повлияет на то, как вы доберетесь до этого материала. Но, возможно, вы уже разобрались с этой частью, и вам просто нужно знать, какой код использовать, как только вы правильно подключите свой код к Preferences.app. - person Nate; 03.02.2013
comment
Если у вас есть более конкретные вопросы, не стесняйтесь задавать их здесь. Однако я не могу общаться в чате, так как это вынуждает меня торчать и постоянно прерываться. Мой последний вопрос заключался в том, чтобы просто проверить, что вы создаете пакет настроек самостоятельно, а не пытаетесь настроить другое приложение. Учитывая, что вы сказали «да», вы сможете следовать руководству по ссылке, которую я разместил, и реализовать свой собственный подкласс PSListController. Получите спецификаторы и измените их. Я не уверен, но если изменения не вступят в силу немедленно, вам может понадобиться вызвать функцию updateSpecifiers:withSpecifiers контроллера. - person Nate; 04.02.2013
comment
@SuperDev, это связано со ссылками в моем ответе, но я просто подумал, что позволю себе сказать, что это тоже похоже на довольно полное руководство: touchrepo.com/guides/preferencebundles/PreferenceBundles.doc - person Nate; 04.02.2013