2013-03-10 3 views
3

Я хотел бы сделать предпочтительный комплект для моей настройки джейлбрейка. Я успешно сделал набор предпочтений с переключателем, который работает.Как использовать значение в пакете предпочтений PSLinkListCell?

Но я хотел бы установить цвет, чтобы выбрать цвет. Пример:

  Blue  
Color > Yellow  
     Green 

Так что, если я нажимаю на цвет, это принесло бы мне на другой экран, который попросит меня выбрать либо «Голубой», «Yellow» или «Зеленый» Я посмотрел учебники в сети, и я думаю, что это PSLinkList.

Но я хочу, чтобы мои настройки читали plist и записывали, какой цвет выбран. Я думаю, он будет читать validValues из PSLinkList, я прав?

Но какой код я использовал бы для чтения plist?

EDIT: Nate помог мне с добавлением PSListcontroller, но я встретил одну проблему:

enter image description here

Вот мой PLIST http://pastebin.com/uNKzLBrf

<?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>Main</string> 
    </dict> 
    <dict> 
     <key>cell</key> 
     <string>PSSwitchCell</string> 
     <key>default</key> 
     <true/> 
     <key>defaults</key> 
     <string>com.junyi00.prefs</string> 
     <key>key</key> 
     <string>enabled</string> 
     <key>label</key> 
     <string>Enable</string> 
    </dict> 
    <dict> 
     <key>cell</key> 
     <string>PSGroupCell</string> 
     <key>label</key> 
     <string>Colors</string> 
    </dict> 
    <dict> 
     <key>cell</key> 
     <string>PSListLinkCell</string> 
     <key>defaults</key> 
     <string>com.junyi00.prefs</string> 
     <key>detail</key> 
     <string>PSListItemsController</string> 
     <key>key</key> 
     <string>color</string> 
     <key>label</key> 
     <string>Color</string> 
     <key>validTitles</key> 
     <array> 
     <string>Default</string> 
     <string>Random</string> 
     <string>Yellow</string> 
     <string>Blue</string> 
     <string>Red</string> 
     <string>Green</string> 
     </array> 
     <key>validValues</key> 
     <array> 
     <string>Default</string> 
     <string>Random</string> 
     <string>Yellow</string> 
     <string>Blue</string> 
     <string>Red</string> 
     <string>Green</string> 
     </array> 
    </dict> 
    </array> 
    <key>title</key> 
    <string>Flash Color</string> 
</dict> 
</plist> 

помочь мне с этим?

ответ

4

Посмотрите at this older tutorial. (Примечание: для других читать это, учебник не использует PreferenceLoader, который теперь должен быть использован для решения этой задачи)

В вашем случае, я думаю, что MyAppName.plist должен содержать что-то вроде этого:

<key>items</key> 
    <array> 
     <dict> 
      <key>cell</key> 
      <string>PSLinkListCell</string> 
      <key>defaults</key> 
      <string>com.mycompany.MyAppName</string> 
      <key>detail</key> 
      <string>PSListItemsController</string> 
      <key>key</key> 
      <string>color_pref</string> 
      <key>label</key> 
      <string>Color</string> 
      <key>validTitles</key> 
      <array> 
       <string>Blue</string> 
       <string>Yellow</string> 
       <string>Green</string> 
      </array> 
      <key>validValues</key> 
      <array> 
       <string>Blue</string> 
       <string>Yellow</string> 
       <string>Green</string> 
      </array> 
     </dict> 
    </array> 

которые затем могут быть считаны в свой собственный код, как это:

#define PLIST_FILENAME @"/var/mobile/Library/Preferences/com.mycompany.MyAppName.plist" 
#define COLOR_PREF @"color_pref" 

// an ivar 
NSMutableDictionary* preferences; 

- (void) initializePreferences { 
    NSFileManager* fileManager = [NSFileManager defaultManager]; 

    // initialize the preferences 
    if (![fileManager fileExistsAtPath: PLIST_FILENAME]) { 

     // make sure the user settings have default values assigned 
     NSDictionary* defaultPrefs = [[NSDictionary alloc] initWithObjectsAndKeys: 
             @"Yellow", COLOR_PREF, 
             nil]; 

     preferences = [[NSMutableDictionary alloc] initWithDictionary: defaultPrefs]; 
     [preferences writeToFile: PLIST_FILENAME atomically: YES]; 
    } else { 
     preferences = [[NSMutableDictionary alloc] initWithContentsOfFile: PLIST_FILENAME]; 
    } 
} 

- (NSString*) colorPref { 
    return [preferences valueForKey: COLOR_PREF]; 
} 

я пропустил некоторые шаги здесь, как это звучит, как вы знакомы с the general process of adding your jailbreak app, or tweak's, settings to Preferences.app. Если это не сработает для вас, отправьте комментарий с разъяснением.

+0

Большое спасибо! Я попробую это скоро. Я видел это раньше, но в основном то, что я пытался, было читать пласт с помощью моего собственного кода, но не удалось. – junyi00

+0

Я, наконец, исправил свою проблему после нескольких попыток, используя это, но Awkwardly, я не могу выбрать, какой цвет (только ячейка показывается, щелчок ничего не делает) Пожалуйста, помогите здесь – junyi00

+0

Я добавил plist в Топ-пост – junyi00