UIViewController 包含 UIViewControllers 流

Posted

技术标签:

【中文标题】UIViewController 包含 UIViewControllers 流【英文标题】:UIViewController containing a flow of UIViewControllers 【发布时间】:2016-07-08 07:30:08 【问题描述】:

我正在构建一个 UIViewController (outer viewController),其中包含另一个 UIViewController (inner viewController)。为此,我正在使用容器视图。现在我希望内部 viewController 推送到另一个 UIViewController,所以我基本上希望内部 viewController 成为 UINavigationController 的子级。我知道一旦初始化容器视图(无论如何都不是直接),您就无法更改容器视图的内容,所以我碰壁了。 有人对我如何将UINavigationController 嵌套在UIViewController 中有任何想法,还是我需要重新考虑解决问题的方法?

【问题讨论】:

【参考方案1】:

您只需发送UINavigationController。 用你的 InnerViewController 初始化它。

现在,在 OuterViewController 中将UINavigationController 添加为 (childViewController + addSubview + didMoveToParentViewController)。

现在,InnerViewController 位于 UINavigationController 内。您可以在UINavigationController 上推送任何您想要的内容。

【讨论】:

【参考方案2】:

受到@7vikram7 的极大启发,我最终得到了一个嵌入了UINavigationController 的容器视图,其中我的InnerViewController 作为其根视图控制器:

在我的 InnerViewController 中,我现在可以推送到任何 UIViewController,并控制我的导航堆栈,例如:

override func viewDidLoad() 
    super.viewDidLoad()

    // Hide the navigation bar
    self.navigationController?.setNavigationBarHidden(true, animated: false)

    // Push to whatever viewController I want to
    let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("myAwesomeViewController") as! AwesomeViewController
    self.navigationController?.pushViewController(viewController, animated: true)

【讨论】:

以上是关于UIViewController 包含 UIViewControllers 流的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中使用 UIViewController 和 UIView?

[self.navigationController popToViewController:VC2 动画:NO];碰撞

更改 UITabBar 高度

推送 ViewController 后的触摸事件问题

UIViewController 包含 UIViewControllers 流

UIViewController 包含方向更改