【问题标题】:How to use one ContainerView to show multiple ViewControllers如何使用一个 ContainerView 显示多个 ViewController
【发布时间】:2019-05-02 03:49:50
【问题描述】:

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

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

例如像这样的样机:

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

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

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

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

【问题讨论】:

  • "ContainerViews 只能嵌入单个 VC" -- 虽然您只能将一个 VC 指定为故事板中的嵌入 VC,但您可以轻松更改子 VC运行时的容器视图。这是一个很好的解释(Obj-C,但代码很少,很容易翻译成 Swift):stackoverflow.com/a/19163585/6257435
  • @DonMag 有趣....感谢您发布此内容 - 我在搜索中没有找到它。我一定会测试代码。

标签: ios xcode uiviewcontroller swift4 uicontainerview


【解决方案1】:

来自我正在工作的项目:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    相关资源
    最近更新 更多