iOS - 如何避免在使用Container View时将导航控件放入导航栏项目中

时间:2017-06-21 08:28:05

标签: ios swift3 uisegmentedcontrol uicontainerview childviewcontroller

我目前正在开发一个新功能,如下所示:

enter image description here

整个内容是一个容器视图,通过播放分段控件来更改内容。 我还有另外两个UIViewController(第一个和第二个内容)。

显然嵌入在导航控制器中。

我的问题是我无法放下分段控件,我的意思是在导航栏之外。

如果我把它关掉,它就会隐藏起来。

以下是我的主视图控制器的一些代码(包含容器视图的代码):

 private func addViewControllerAsChildViewController(childViewController: UIViewController) {  
        view.addSubview(childViewController.view)

        childViewController.view.frame = view.bounds
        childViewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]            
    }

    private func removeViewControllerAsChildViewController(childViewController: UIViewController) {
        childViewController.willMove(toParentViewController: nil)

        childViewController.view.removeFromSuperview()

        childViewController.removeFromParentViewController()
    }

我正在做的是在实例化我的2个ViewControllers(第一个和第二个)之后,我将它们添加为子视图控制器。

如何在不破坏我的所有逻辑和设计的情况下处理分段控件,我的意思是在导航栏之外显示它。

1 个答案:

答案 0 :(得分:1)

我按照以下方式处理它。在容器视图中添加分段控件,因为您知道此视图将使用导航栏使用模拟指标,以便您知道分段控件的可见位置。

在此容器视图控制器中创建另一个视图,该视图将包含子视图控制器。使视图范围从分段视图的底部到容器视图的底部。 IBOutlet此视图(childContainerView),以便您可以在视图控制器代码中访问它。

不是简单地将子视图控制器添加到默认的self.view.addSubView(childVC.view),其中self.view是整个视图,只需将其添加到上述IBOutletted视图(childContainerView)。