【问题标题】:iOS - How to avoid putting the Navigation Control in the Navigation Bar Items when working with Container ViewiOS - 使用容器视图时如何避免将导航控件放在导航栏项目中
【发布时间】:2017-11-24 00:56:48
【问题描述】:

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

整个内容是一个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(第一个和第二个)之后,我将它们添加为子 View Controller。

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

【问题讨论】:

  • 分段控件现在是您导航栏项目的一部分,对吗?为什么你首先需要“把它拉下来”。你想首先尝试让它在导航栏中工作吗?
  • 在导航栏中可以完美地使用它。但是我不得不将我的 ViewController 嵌入到一个新的导航栏中。这就是为什么我失去了“以前的”导航。而且导航栏中的分段控件并不美观

标签: ios swift3 uisegmentedcontrol uicontainerview childviewcontroller


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多