ios - NSUserDefaults 和 alertView

标签 ios xcode nsuserdefaults uialertview

我正在创建将在用户首次启动应用程序时显示的免责声明。免责声明是一个带有 2 个选项的 alertView。如果用户同意,则 firstViewController 将显示。如果他不这样做,他将被重定向到另一个 viewController。但如果用户第一次同意,我无法让免责声明消失。每次应用程序启动时都会显示。任何帮助,将不胜感激。提前谢谢你..

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

      if (![[defaults valueForKey:@"keyDisclaimer"] isEqualToString:@"accepted"]) {

UIAlertView *disclaimer = [[UIAlertView alloc] initWithTitle:@"Read Before use" message:@"By using this app you agree to its terms and conditions.\n\n\n\n\n\n\n\n\n\n\ntext heren\n\n\n\n\n\n\n\n\n\n\n\n\n" delegate:self cancelButtonTitle:@"No!" otherButtonTitles:@"Yes Let me In", nil];

[disclaimer show];

}

// Override point for customization after application launch.
return YES;
}

-(void) alertView:(UIAlertView *) alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
NSString *buttonString = {[alertView buttonTitleAtIndex:buttonIndex]};

if ([buttonString isEqualToString:@"Yes Let me In"]) {
    NSMutableDictionary* defaultValues = [NSMutableDictionary dictionary];

    [defaultValues setValue:@"accepted"forKey:@"keyDisclaimer"];

    [[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];



}
else if ([buttonString isEqualToString:@"No!"]) {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sorry!" message:@"You are not allowed to use this app due to the fact that you did not agree to the terms and Conditions. Please exit this app!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [alert show];

 //  [[NSUserDefaults standardUserDefaults] setValue:@"notAccepted" forKey:@"keyDisclaimer"];
 }

   if ([buttonString isEqualToString:@"OK"]) {
       introViewController *intro = [[introViewController alloc] initWithNibName:@"introViewController" bundle:nil];

      _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

       _window.rootViewController = intro;
       [_window makeKeyAndVisible];
   }
 }

最佳答案

NSMutableDictionary* defaultValues = [NSMutableDictionary dictionary]; 
[defaultValues setValue:...forKey:...]
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];

如果未设置(第一次),这将注册您的默认值

此外,您似乎忘记了 [defaults synchronize] 在设置值后提交更改。如果是这样,您根本不需要 registerDefaults 方法。

像这样:

if ([buttonString isEqualToString:@"Yes Let me In"]) {
    NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
    [defaults setValue:@"accepted"forKey:@"keyDisclaimer"];
    [defaults synchronize];
}

关于ios - NSUserDefaults 和 alertView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12743334/

相关文章:

iphone - 使用 MPVolumeView 时隐藏灰色卷覆盖?

ios - 尝试从 UIView 访问标签

nsuserdefaults - 特别详细说明了 NSUserDefaultsDidChangeNotification 上的默认值发生了哪些变化

ios - UserDefaults 未在 TextView 中保留数据

ios - 如何在特定的View Controller上循环播放音频

ios - 更新 UILabel 值作为 CAShapeLayer 动画

ios - 总是需要约束 - iOS (Swift)

ios - 在 Xcode 中查找未使用的文件

iphone - 带有 NSTimer iPhone 的 slider

ios - 将 NSString 转换为 NSArray 并存储在 NSUserdefaults 中