【问题标题】:iOS UINavigationController switching rootviewcontroller based on conditioniOS UINavigationController 根据条件切换 rootviewcontroller
【发布时间】:2014-01-27 16:42:00
【问题描述】:

我正在使用故事板编写一个 iOS 应用程序。

我创建了ViewControllerAViewControllerB,然后将ViewControllerA 嵌入故事板上的UINavigationController

应用首次启动时会显示ViewControllerA,否则会显示ViewControllerB

我成功添加了启动历史检查代码。我将在didFinishLaunchingWithOptions 方法中将UINavigationController 设置为窗口的rootViewController

问题是我无法从情节提要中获取UINavigationController,因此我无法根据我的情况推送ViewControllerAViewControllerB

【问题讨论】:

    标签: ios storyboard navigationcontroller


    【解决方案1】:

    如果您使用情节提要,则应将UINavigationController 设置为初始视图控制器,它将自动加载和显示。现在,当ViewControllerA 中发生某些事情时,它可以通过以下方式推送ViewControllerB

    ViewControllerB *b = ...;
    [self.navigationController pushViewController:b animated:YES];
    

    为了增强篡改,应用委托具有window 属性。从这里您可以获得rootViewController。将其投射到UINavigationController,您可以修改/推送。将其设置为其他内容,您可以将UINavigationController 全部替换。

    【讨论】:

    • 我想将 ViewControllerA 或 ViewControllerB 显示为第一个屏幕。上面的方法,可以隐藏ViewControllerA吗?
    • 如果我在 appdelegate 中添加上述代码,如何从 appdelegate 中的情节提要中获取 ViewControllerA 和 B? [self.storyboard instantiateViewControllerWithIdentifier:@"ViewControllerA"];我找到了这段代码,但是 self.storyboard 在 appdelegate 中无效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 2011-11-28
    • 1970-01-01
    • 2013-07-18
    • 2019-06-13
    • 1970-01-01
    • 2016-11-08
    相关资源
    最近更新 更多