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

标签 ios xcode uiviewcontroller swift4 uicontainerview

我的情况是,现在我的应用程序使用 12 个 ViewController。
每个都有两个 ContainerView,它们拥有相同的控件集(我将它们称为控制组),并通过 segues 显示它们。
到目前为止,这是可行的,但我必须为相同的两个 ContainerViews 布局和设置约束 12 次 - 每个 VC 一次。如果我添加另一个 VC,那么我必须重新布置它们,等等。如果我更改布局的任何部分,那么我必须一次又一次地修改所有 12 个 - 它并不是真正可扩展的。

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

例如像这样的样机:

enter image description here

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

当然,ContainerViews 只能嵌入一个 VC,所以我见过的最接近的解决方案是将 12 个 ContainerViews 放在一起——看起来还是很乱。

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

我怎样才能得到这种结构和行为?
(注意:我也希望能够使用 Storyboard)

最佳答案

从我正在工作的项目中:

enter image description here

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

如果您有很多 Controller ,您可能需要使用 IBOutlet 组。

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

相关文章:

ios9 - Xcode 7 - Swift - 键盘在模拟器中正确显示但在实际设备上不正确

ios - 如何识别哪种手指类型——食指、中指等

android - 我想为商店中的 android 和 ios 应用程序生成相同的 URL

ios - 是否可以在文本模式/非图形用户界面中编辑 IOS UI

objective-c - 过渡从 View Controller :toViewController error: children view controllers must have a common parent view controller

ios - UIImagePickerController 始终显示 640x640 图像

ios - performActionForShortcutItem 与 applicationWillEnterForeground 的调用顺序

ios - 我可以自定义 iOS 模拟器保存截图的位置吗? (而不是桌面)

ios - 找不到 GStreamer Xcode 10.1 gst/gst.h

ios - 综合后引用为空