【问题标题】:ContainerView - how close invisible viewContainerView - 如何关闭不可见视图
【发布时间】:2018-11-09 00:00:28
【问题描述】:

我有这个故事板:

还有这段代码:

var actualVisibleView : String? = nil

func showSubViewInContainerView(view: String){
        let controller = storyboard!.instantiateViewController(withIdentifier: view)
        addChildViewController(controller)
        controller.view.translatesAutoresizingMaskIntoConstraints = false

        systemContainerView.addSubview(controller.view)

        NSLayoutConstraint.activate([
            controller.view.leadingAnchor.constraint(equalTo: systemContainerView.leadingAnchor),
            controller.view.trailingAnchor.constraint(equalTo: systemContainerView.trailingAnchor),
            controller.view.topAnchor.constraint(equalTo: systemContainerView.topAnchor),
            controller.view.bottomAnchor.constraint(equalTo: systemContainerView.bottomAnchor)
            ])

        controller.didMove(toParentViewController: self)

        if self.actualVisibleView != nil && self.actualVisibleView != view {
            controller.dismiss(animated: false) {
                print("UBIJAM: \(view)")
            }
        }
        self.actualVisibleView = view
        print("OTWIERAM: \(view)")
    }

从左侧菜单中,我使用代码在此容器视图中打开各种视图:

showSubViewInContainerView(view: "view1")
showSubViewInContainerView(view: "view2")
showSubViewInContainerView(view: "view3")
showSubViewInContainerView(view: "view4")

此代码运行良好。唯一的问题是,当我在容器视图中打开一个新视图时,我想关闭以前可见的视图。 在 containerview 中只能看到一个活动视图。

目前有一些视图相互重叠。

有人知道怎么解决吗?

【问题讨论】:

    标签: ios swift swift3 swift4


    【解决方案1】:

    在容器中添加新视图之前删除其他视图

    systemContainerView.subviews.forEach { $0.removeFromSuperview() }
    systemContainerView.addSubview(controller.view)
    

    【讨论】:

      猜你喜欢
      • 2013-09-03
      • 1970-01-01
      • 2012-08-09
      • 2014-06-19
      • 1970-01-01
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多