OGeek|极客世界-中国程序员成长平台

标题: ios - 使用 Pageviewcontroller 教程后的导航 Controller [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 23:45
标题: ios - 使用 Pageviewcontroller 教程后的导航 Controller

我正在使用 pageViewController 来展示我的应用程序的所有功能。但是我只想在应用程序的第一次启动时显示它,而不是每次都显示它。为了做到这一点,我创建了一个对象,该对象存储一个 bool 值以显示或不显示教程。该 bool 值用于 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];
    }

我的问题是我在这两种情况下都创建了一个导航 Controller 。因此,如果我有要显示的教程,用户将在导航栏中获得一个后退按钮,并且可以返回 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];



Best Answer-推荐答案


在本教程的 View Controller 的 viewWillAppear: 方法中,您可以使用它来隐藏返回按钮:

[self.navigationItem setHidesBackButton:YES animated:YES];

然后在viewDidDisappear:中,可以恢复后退按钮:

[self.navigationItem setHidesBackButton:NO animated:YES];

关于ios - 使用 Pageviewcontroller 教程后的导航 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24628943/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4