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