首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSUserDefaults和alertView

NSUserDefaults和alertView
EN

Stack Overflow用户
提问于 2012-10-05 17:25:47
回答 2查看 241关注 0票数 0

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

代码语言:javascript
复制
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];
   }
 }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-05 17:29:33

代码语言:javascript
复制
NSMutableDictionary* defaultValues = [NSMutableDictionary dictionary]; 
[defaultValues setValue:...forKey:...]
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];

这将注册您的默认值,如果它们没有设置(第一次)

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

如下所示:

代码语言:javascript
复制
if ([buttonString isEqualToString:@"Yes Let me In"]) {
    NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
    [defaults setValue:@"accepted"forKey:@"keyDisclaimer"];
    [defaults synchronize];
}
票数 2
EN

Stack Overflow用户

发布于 2012-10-05 18:08:08

您希望使用stringForKey或objectForKey之类的内容,而不是valueForKey。

代码语言:javascript
复制
if([[defaults stringForKey:@"keyDisclaimer"] isEqualToString:@"accepted"]) {

我过去在使用valueForKey时有过不好的经历,并不总是按照我想要的方式工作。这可能就是给你带来问题的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12743334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档