InAppSettingsKit的不同设置

时间:2014-02-20 11:49:35

标签: ios objective-c inappsettingskit

我查了this& this以及与InAppSettingsKit相关的其他问题,但无法解决问题。
我已下载LinPhone,其中InAppSettingsKit用于设置。现在,我的要求是我必须在登录后更改一个特定案例的设置,它将与所有其他案例一样。
请指导我,如何更改该案例的设置以及在哪里?

1 个答案:

答案 0 :(得分:0)

这是一个简短的例子:

// The name of the settings file, currently this plugin use the InAppSettings.bundle
NSString *settingsBundle = [[NSBundle mainBundle] pathForResource:@"InAppSettings" ofType:@"bundle"];
if(!settingsBundle) {
    NSLog(@"Could not find Settings.bundle");
    return;
}

NSDictionary *settings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"Root~iphone.inApp.plist"]];
NSArray *preferences = [settings objectForKey:@"PreferenceSpecifiers"];

NSMutableDictionary *defaultsToRegister = [[NSMutableDictionary alloc] initWithCapacity:[preferences count]];
for(NSDictionary *prefSpecification in preferences) {
    NSString *key = [prefSpecification objectForKey:@"Key"];
    if(key) {
        [defaultsToRegister setObject:[prefSpecification objectForKey:@"DefaultValue"] forKey:key];
    }
}

[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsToRegister];
[defaultsToRegister release];
[[NSUserDefaults standardUserDefaults] synchronize];

因此,您可以在午餐时将其放入AppDelegate进行设置。 然后,您可以使用NSUserDefaults

更改与密钥关联的值

检索示例

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    CGFloat fontSize = 15;

    if(standardUserDefaults){
        fontSize = (CGFloat)[[standardUserDefaults objectForKey:@"fontSize"] floatValue];
        if(fontSize == 0)
            fontSize = 15;
    } 

在设置更改时通知控制器

要查看是否修改了某些设置,请将其放入您希望收到通知的控制器的viewDidLoad中:

NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self
           selector:@selector(defaultsChanged:)
               name:NSUserDefaultsDidChangeNotification
             object:nil];

您只需要实现函数defaultsChanged