2012-10-05 36 views
0

我正在創建一個免責聲明,當用戶第一次啓動應用程序時將會顯示。免責聲明是一個帶有2個選項的alertView。如果用戶同意,則會顯示firstViewController。如果他沒有,他會被重定向到另一個viewController。但如果用戶第一次同意,我不能讓免責聲明消失。每次應用啓動時都會顯示。任何幫助,將不勝感激。預先感謝您..NSUserDefaults和alertView

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]; 
    } 
} 

回答

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]; 
} 
+0

請檢查我更新的問題。它仍然不起作用 – snksnk

+0

你有一個錯字。這可能是一個原因。我的手機沒有任何問題.. – dreamzor

+1

ok我更新了關於默認同步的帖子,似乎這是完美的概率 – dreamzor

0

你想使用類似stringForKey或objectForKey代替valueForKey。

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

我在過去並沒有總是以我想要的方式工作,但我在valueForKey中遇到過不好的經歷。這可能是什麼導致你一些問題。