启动时不同的视图控制器

Posted

技术标签:

【中文标题】启动时不同的视图控制器【英文标题】:Different view controller at launch 【发布时间】:2014-07-08 14:35:31 【问题描述】:

我有一个应用程序,我想在首次启动时显示教程。为了我使用[NSUserDefaults standardUserDefaults],它工作正常。这是我在 AppDelegate.m 中实现它的方式

    //Set windows
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    //Set Storyboard
    UIStoryboard* storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                         bundle:nil];

    //Check if it's first launch or not
    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
    
        self.homeViewController = [storyBoard instantiateViewControllerWithIdentifier:@"HomeViewController"];
        self.rootVC = self.homeViewController;
    
    else
    
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        self.tutoViewController = [storyBoard instantiateViewControllerWithIdentifier:@"TutoViewController"];
        self.rootVC = self.tutoViewController;
    
    self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:self.rootVC];
    [self.window makeKeyAndVisible];

我的问题是在教程之后,当我按下“HomeViewController”时,我有一个带有后退按钮的导航栏。我想过把它藏起来,但我觉得它不是很干净,我想知道它可能是一个更好的把戏。

希望你能帮助我! 提前谢谢

【问题讨论】:

为什么不在应用程序第一次运行时将模态视图推送到根视图控制器上? 我想过,但是我在使用 PresentViewController 时遇到了同样的问题,关闭它后,我在导航栏上有一个后退按钮。 如果您正在使用故事板,为什么不让自己轻松一些,删除上面的功能并使用故事板来管理您的视图。将 UINavigationController 设置为情节提要中的开始视图,通过按住控件并拖动到根视图控件来添加您想要的第一个视图控制器作为根视图控制器,然后在您的第一个视图控制器的 viewWillAppear 中处理模态弹出逻辑跨度> 它工作得很好,非常感谢 ;) 酷我为你添加了答案:) 【参考方案1】:

如果您正在使用故事板,为什么不让自己轻松一些,删除上面的功能并使用故事板来管理您的视图。将 UINavigationController 设置为情节提要中的开始视图,通过按住控件并拖动到根视图控件来添加您想要的第一个视图控制器作为根视图控制器,然后在您的第一个视图控制器的 viewWillAppear 中处理模态弹出逻辑

【讨论】:

以上是关于启动时不同的视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在第一次启动时打开视图控制器

如何在 ios 10 中为不同的本地通知启动不同的视图控制器

xcode 在不同的视图控制器上启动应用程序

加载不同的纵向/横向 UIViews

不同的视图支持不同的方向

设置导航控制器的初始视图控制器