如何在首选项包中使用PSLinkListCell中的值?

时间:2013-03-10 03:19:03

标签: ios objective-c cydia tweak theos

我想为我的越狱调整制作一个偏好包。 我成功地用一个有效的开关制作了一个偏好包。

但我想要一个选择颜色的设置。 例如:

         Blue      
Color >  Yellow       
         Green

因此,如果我点击颜色,它会将我带到另一个屏幕,要求我选择" 蓝色",&#34 ;的"或" 绿色" 我在网上查看了教程,我认为这是一个PSLinkList

但是我希望我的调整能够读取plist并记录所选择的颜色。 我认为它会读validValues的{​​{1}},我是对的吗?

但是我会使用什么代码来阅读plist?

编辑:Nate帮我添加了PSListcontroller,但遇到了一个问题:

enter image description here

这是我的plist http://pastebin.com/uNKzLBrf

PSLinkList

帮我解决这个问题?

1 个答案:

答案 0 :(得分: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很熟悉。如果这对您不起作用,请发表评论,要求澄清。