如何删除Container View Controller及其子视图控制器

时间:2017-05-14 19:36:38

标签: ios swift uiviewcontroller uicontainerview subviews

TLDR:我想确保删除代码删除容器视图和UIViewController A,B和C.非常感谢任何帮助。

我的应用程序有一个容器视图which adds a container view programmatically。容器视图中的视图具有导航控制器并推送到各种外部UIViewControllers。例如,View A位于容器视图中(带有导航控制器),然后推送到B,推送到C.在UIViewController A,B& A上有一个选项。 C删除容器视图。但是,当我触发此选项以在除A之外的任何其他UIViewController中关闭Container视图时,View不会被解除(仍然在屏幕上可见)。例如,如果我在UIViewController B上触发它,UIViewController Bs视图仍然存在。

以下是我创建容器视图的方法:

// add container

containerView = UIView()
containerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(containerView)
NSLayoutConstraint.activate([
    containerView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10),
    containerView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10),
    containerView.topAnchor.constraint(equalTo: view.topAnchor, constant: 10),
    containerView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -10),
    ])

// add child view controller view to container

controller = storyboard!.instantiateViewController(withIdentifier: "A")
addChildViewController(controller)
controller.view.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(controller.view)

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

controller.didMove(toParentViewController: self)

取自 - https://stackoverflow.com/a/40102513

我的删除代码是:

controller.willMove(toParentViewController: nil)
controller.view.removeFromSuperview() //Im believe here may be the problem
controller.removeFromParentViewController()
containerView.isHidden = true

UIViewController随着视图被添加containerView.addSubview(controller.view)所以我猜这就是为什么删除代码不能在UIViewController B或C上工作的原因。我想确保我的删除代码删除容器视图和UIViewController A,B和C.非常感谢任何帮助?

0 个答案:

没有答案
相关问题