我有此代码:
MainView.swift
func showSubViewInContainerView(view: String, parms: Int){
let controller = storyboard!.instantiateViewController(withIdentifier: view)
if view != "ProductDetailView" {
systemContainerView.subviews.forEach { $0.removeFromSuperview() }
}
if view == "ConceptGalleryView" {
let con = controller as! ConceptGalleryViewController
con.idGallery = parms
}
systemContainerView.addSubview(controller.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)
self.actualVisibleView = view
print("OPEN IN CONTAINERVIEW: \(view)")
}
此代码在ContainerView中打开-视图:ProductDetailView
在ProductDetailView中,我有带有以下代码的按钮:
ProductDetailView.swift
@IBAction func backBtnPressed(_ sender: Any) {
dismiss(animated: true, completion: nil)
}
我想单击backBtnPressed关闭ProductDetailView视图并返回到可见的Mainview视图。 不幸的是,上面的代码不起作用(什么都不做)。
有人知道如何解决吗?
答案 0 :(得分:1)
dismiss
关闭由视图控制器以模态形式显示的视图控制器。
您没有显示视图控制器(而是将其添加为子视图),这就是dismiss
不起作用的原因。
您可以将视图控制器设置为模态并显示吗?否则,您的按钮代码应将视图控制器作为子级删除。
答案 1 :(得分:1)
您可以通过以下方式实现:
1)创建委托模式
2)在func backBtnPressed(_ sender:Any)中调用在mainView中实现的委托方法
3)在mainView中的委托的实现方法 从systemContainerView删除您的productDetailView
答案 2 :(得分:0)
代替这个
controller.didMove(toParentViewController: self)
尝试presentpresentController
self.present(controller, animated: true, completion: nil)