我的情况是,现在我的应用程序使用12个ViewController。
每个容器都有两个ContainerViews,它们具有相同的控件集(我称它们为控件组),并通过segue显示它们。
到目前为止,这仍然有效,我必须为相同的两个ContainerViews布局和设置约束12次-每个VC一次。而且,如果我添加另一个VC,则必须再次对其进行布局,依此类推。如果更改布局的任何部分,则必须一次又一次地修改全部12个-这不是真正可伸缩的。

在我看来,如果两个控制组位于一个还包含ContainerView的VC上,会更容易。然后,如果ContainerView可以在十二个视图中的每一个之间切换,则维护起来会容易得多。

例如这样的样机:

ios - 如何使用一个ContainerView显示多个ViewController-LMLPHP

该模型显示了同一VC上的两个控制容器“Upper”和“Lower”。在两者之间是ContainerView,其中将显示所需的VC。

当然,ContainerViews只能嵌入一个VC,所以我看到的最接近的解决方案是将12个ContainerView彼此叠置-看起来还是很混乱。

我不一定需要使用ContainerView-但是,有一些不错的功能,例如限制VC的大小并使其遵循其尺寸,这使内容的布局更加容易。

如何获得这种结构和行为?
(注意:我也希望能够使用情节提要)

最佳答案

从项目中我正在工作:

ios - 如何使用一个ContainerView显示多个ViewController-LMLPHP

将所需数量的容器视图添加到主视图控制器。比在您的代码中,更改alpha值以显示/隐藏它们。像这样:

@IBOutlet weak var timelineContainerView: UIView!
@IBOutlet weak var albumsContainerView: UIView!


@IBAction func journeySegmentedControlValueChanged(_ sender: UISegmentedControl) {
    switch sender.selectedSegmentIndex {
    case 0:
        timelineContainerView.alpha = 1.0
        albumsContainerView.alpha = 0.0
    case 1:
        timelineContainerView.alpha = 0.0
        albumsContainerView.alpha = 1.0
    default:
        break
    }
}

如果您有很多控制器,则可能要使用IBOutlet组。

关于ios - 如何使用一个ContainerView显示多个ViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53549918/

10-12 05:57