Как да използвам стойността в PSLinkListCell в пакета с предпочитания?

Бих искал да направя пакет с предпочитания за моята настройка за джейлбрейк. Успешно направих пакет с предпочитания с превключвател, който работи.

Но бих искал настройка за избор на цвят. Пример:

         Blue      
Color >  Yellow       
         Green

Така че, ако щракна върху Цвят, това ще ме отведе до друг екран, който ме подканва да избера или „Син“, „Жълт“ или „ Зелено" Разгледах уроци в мрежата и мисля, че това е PSLinkList.

Но искам моята настройка да чете plist-а и да записва какъв цвят е избран. Мисля, че ще прочете validValues от PSLinkList, прав ли съм?

Но какъв код бих използвал, за да прочета plist?

РЕДАКТИРАНЕ: Nate ми помогна с добавянето на PSListcontroller, но срещнах един проблем:

въведете описание на изображението тук

Ето моя 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>

Помогнете ми с това?


person junyi00    schedule 10.03.2013    source източник


Отговори (1)


Разгледайте това по-стар урок. (Забележка: за другите, които четат това, урокът не използва 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];
}

Пропуснах някои стъпки тук, тъй като изглежда, че сте запознати с общия процес на добавяне на вашия jailbreak приложението или настройките на ощипване към Preferences.app. Ако това не работи за вас, публикувайте коментар с молба за разяснение.

person Nate    schedule 10.03.2013
comment
Благодаря много! Ще опитам това скоро. Видях това преди, но главно това, което се опитвах, беше да прочета plist със собствения си код, но не успях. - person junyi00; 10.03.2013
comment
Най-накрая поправих проблема си след няколко опита да използвам това, но неудобно, не мога да избера какъв цвят (показва се само клетката, щракването върху нея не прави нищо) Моля, помогнете тук - person junyi00; 15.03.2013
comment
Добавих списъка в горния пост - person junyi00; 16.03.2013
comment
@junyi00, написал си грешно PSLinkListCell. Написахте PSListLinkCell. Това е проблема. - person Nate; 17.03.2013