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