如何将子视图添加到当前导航控制器?

How to add subview to current navigation controller?

我有一个项目设置,它有一个 uiscrollview,它附加了 2 个具有 table 视图的视图控制器,以允许水平滚动。这嵌入在导航控制器中。

这样想。 VC1 是带按钮的摘要,可将用户带到 VC2。 VC2 是项目列表,但水平滚动视图中包含 2 个列表。 VC2 的列表是 VC2.1 和 VC2.2。这些是嵌入了 table 视图的视图控制器。 VC3是详细视图,点击VC2.1或VC2.2的单元格后可以进入。 VC1 和 VC2 都有导航控制器。 VC2.1、VC2.2 和 VC3 没有。

我正在尝试设置 table 视图单元格以推送到详细信息视图。我能够使用以下方式以模态方式执行此操作:

let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc: MyDetailsViewController = storyboard.instantiateViewControllerWithIdentifier("myDetailsVC") as! MyDetailsViewController
let navigationController = UINavigationController(rootViewController: vc)
self.presentViewController(navigationController, animated: true, completion: nil)

然而,有几件事并没有像我希望的那样工作。

  1. 视图显示有导航栏但没有后退按钮
  2. 视图以模态方式呈现

有没有办法让这个详细信息视图成为主导航控制器的一部分,并像所有其他导航视图一样从右向左滑动显示?

通过维护 ViewController 容器,您可以简单地访问 parentViewControllerNavigationController

在使用 addSubview: 添加 ViewControllerview 时,使用 addChildViewController:

添加 ViewControllerParentViewController
self.addChildViewController(VC2)

VC2.view.frame = scrollView.bounds
self.view .addSubview(VC2.view)