0

ユーザーが最初にアプリを起動したときに表示される免責事項を作成しています。免責事項は、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];
   }
 }
4

2 に答える 2

2
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];
}
于 2012-10-05T09:29:33.380 に答える
0

valueForKey の代わりに stringForKey や objectForKey のようなものを使用したいとします。

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

過去に valueForKey で悪い経験をしたことがありますが、常に思いどおりに機能するとは限りません。それがあなたにいくつかの問題を引き起こしているのかもしれません。

于 2012-10-05T10:08:07.747 に答える