我有一个应该只显示设置页面的应用程序:第一次打开应用程序时。
现在这样可行,当用户按下iPhone上的中间按钮时,它会重新打开应用程序并从主屏幕继续 - 这很棒。但是,如果我双击iPhone按钮并关闭应用程序,它将再次进入设置屏幕而不是它的位置。
为什么这样做?如何让我的应用只显示一次设置?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
NSUserDefaults *settingsscreen = [NSUserDefaults standardUserDefaults];
[settingsscreen registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstTime", nil]];
BOOL firstTime = [settingsscreen boolForKey:@"firstTime"];
if ( firstTime==YES) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"SettingsShown"];
[[NSUserDefaults standardUserDefaults] synchronize];
self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"SetUpNav"];
}
else
{
return YES;
}
}
答案 0 :(得分:4)
不要基于if ( firstTime==YES) {
使用@"firstTime"
,因为该标志实际上从未保存过。您应该使用用@"SettingsShown"
键保存的标志。
BOOL firstTime = [settingsscreen boolForKey:@"SettingsShown"];
if (!firstTime) {
...
答案 1 :(得分:1)
相反,在appDelegate中尝试在设置Page本身时实现它
-(void) viewDidLoad {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
username = [defaults objectForKey:@"username"];
if (username != NULL ) {
[self selfLogin];
}
}
-(void)selfLogin{
nextPageController = [[NextPageViewController alloc]init];
[self.navigationController pushViewController:nextPageController animated:YES];
}