我有一个带故事板和导航控制器的应用程序,如果用户第一次启动应用程序,我想弹出一个协议视图,
在Appdelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//app launched first time
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setBool:YES forKey:@"firstTime"];
BOOL firstTime = [prefs boolForKey:@"firstTime"];
NSLog(@"firstTime %c",firstTime);
//check if user has agreed agreement or not
if ( firstTime==YES) {
//replace and push rootview manually
UIStoryboard *storyboard = [UIApplication sharedApplication].delegate.window.rootViewController.storyboard;
UIViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"AgreementViewController"];
[self.window.rootViewController presentModalViewController:loginController animated:YES];
return NO;
}else
return YES;
}
我Nslog
第一次获得reverse question mark sign
,我猜它既不是肯定也不是
那么如何设置布尔值,将其保存在ios设备中并在每次应用启动时调用它?
答案 0 :(得分:3)
在日志语句中将%c
更改为%i
答案 1 :(得分:3)
您需要使用NSUserDefaults方法registerDefaults。该方法允许您设置默认值(在您的情况下为YES),仅在用户未更改值时使用。一旦用户将值更改为NO,注册的默认值将不再有任何效果。
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstTime", nil];
BOOL firstTime = [prefs boolForKey:@"firstTime"];
//check if user has agreed agreement or not
if ( firstTime==YES) { .....
然后,稍后当用户完成您想要的操作时,您可以按常规方式将键的值" firstTime"设置为NO。