我正在使用pageViewController来展示我应用的所有功能。但是我只想在应用程序的第一次启动时显示它而不是每次都显示它。为了,我创建了一个存储布尔值的对象来显示或不显示教程。此布尔值在AppDelegate.m
中使用if(tutoStatus == NO)
{
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *tutoViewController = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:tutoViewController];
[self.window setRootViewController:navController];
[Tutorial setTutoStatus:YES];
[Tutorial savePrefs];
}
else
{
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *homeViewController = [storyboard instantiateViewControllerWithIdentifier:@"homeViewController"];
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:homeViewController];
[self.window setRootViewController:navController];
}
我的问题是我在两种情况下都创建了一个导航控制器。因此,如果我有要显示的教程,用户将在导航栏中获得一个后退按钮,并且可以返回到PageViewController。在应用程序开始时显示教程的最佳方法是什么?
由于
- 编辑
我使用下面的代码解决了我的问题
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
{
NSLog(@"not first launch");
UIStoryboard* storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard"
bundle:nil];
self.homeViewController = [storyBoard instantiateViewControllerWithIdentifier:@"HomeViewController"];
self.window.rootViewController = self.self.homeViewController;
}
else
{
NSLog(@"first launch");
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
[[NSUserDefaults standardUserDefaults] synchronize];
UIStoryboard* storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard"
bundle:nil];
self.tutoViewController = [storyBoard instantiateViewControllerWithIdentifier:@"TutoViewController"];
self.window.rootViewController = self.tutoViewController;
}
[self.window makeKeyAndVisible];
答案 0 :(得分:1)
在本教程的视图控制器的viewWillAppear:
方法中,您可以使用它来隐藏后退按钮:
[self.navigationItem setHidesBackButton:YES animated:YES];
然后在viewDidDisappear:
中,您可以恢复后退按钮:
[self.navigationItem setHidesBackButton:NO animated:YES];
答案 1 :(得分:0)
删除UIpageViewController的导航控制器&通过调用presentViewController:animated:completion:
此外,如果您只想在应用程序的首次启动时显示教程,则可能需要使用 NSUserDefaults 来存储bool。
此链接中的内容 - > Show screen on first launch only in iOS