如何使用一个ContainerView显示多个ViewController

时间:2018-11-30 01:22:59

标签: ios xcode uiviewcontroller swift4 uicontainerview

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

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

例如类似这样的模型:

enter image description here

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

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

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

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

1 个答案:

答案 0 :(得分:0)

我正在从事的项目中:

enter image description here

向主视图控制器添加任意数量的容器视图。比在您的代码中,更改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组。