Tho*_*son 0 iphone nsuserdefaults
我在我的app委托applicationDidFinishLaunching方法中有这个:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if([defaults objectForKey:@"AcceptTC"] == nil){
NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:@"NO" forKey:@"AcceptTC"];
[defaults registerDefaults:appDefaults];
}
Run Code Online (Sandbox Code Playgroud)
我在RootViewController viewDidLoad方法中有这个:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if(![defaults boolForKey:@"AcceptTC"]){
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Notice" message:@"By using this application you agree to be bound by the Terms and Conditions as stated within this application." delegate:self cancelButtonTitle:@"No Deal" otherButtonTitles:@"I Understand",nil];
[alert show];
[alert release];
}
Run Code Online (Sandbox Code Playgroud)
和我的警报视图委托这样做:
if(buttonIndex == 0){
exit(0);
}
else{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"YES" forKey:@"AcceptTC"];
}
Run Code Online (Sandbox Code Playgroud)
但是,当我单击"我理解"(按钮索引1)然后重新启动应用程序时,我仍然会看到警报视图!即使我确定将值设置为YES.
我不知道如何改变这一点.:(我只希望它显示用户第一次启动应用程序 - 我不想每次他们想要使用它时继续显示它.
谢谢
在我的应用程序中我使用NSUserDefaults与bool,工作正常.
当第一个ViewController加载时,它将执行:
BOOL terms = [[NSUserDefaults standardUserDefaults] boolForKey:@"termsaccepted"];
if (!terms) {
[self presentModalViewController:disclaimerViewController animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
在免责声明视图中,点击按钮后:
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"termsaccepted"];
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)
我想你错过了"同步"部分.但是我发现使用bool也更精简了.
| 归档时间: |
|
| 查看次数: |
2685 次 |
| 最近记录: |