iOS - 使用容器视图时如何避免将导航控件放在导航栏项目中

iOS - How to avoid putting the Navigation Control in the Navigation Bar Items when working with Container View

我目前正在开发如下所示的新功能:

整个内容是一个Container View,为了通过Segmented Control来改变内容。 我还有 2 个其他 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 个 ViewController(第一个和第二个)之后,我将它们添加为子视图控制器。

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

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

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

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