1

これこれ、およびに関連する他の質問も確認InAppSettingsKitしましたが、解決策に到達できませんでした。設定にInAppSettingsKitを使ったLinPhone
をダウンロードしました。ここで、私の要件は、ログイン後に特定の 1 つのケースのみの設定を変更する必要があり、他のすべてのケースの場合と同じになることです。その 1 つのケースの設定を変更する方法と場所を教えてください。

4

1 に答える 1

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

于 2014-02-20T12:48:16.807 に答える