Swift 4无法从视图中删除popupViewController

fhity93d  于 2022-12-17  发布在  Swift
关注(0)|答案(1)|浏览(139)

我有一个带有UIView的popupViewController,如下所示。按下UIView下方的按钮可更改UIView视图。然后,UIView将更改为图右侧的一个彩色视图。每个视图上都有一个按钮,我希望通过该按钮消除/关闭popupView以返回主ViewController视图(ARSCN视图),但我似乎无法让它工作?我实际上可以通过PopUpView控制器上的“关闭”按钮关闭popUpView。

我试过从右边的一个视图中调用关闭popupview的函数,但它什么也没做。任何帮助都会很好。
主视图控制器中的弹出视图如下所示:

let popOverVC = UIStoryboard(name: "Main", bundle:    nil).instantiateViewController(withIdentifier: "sbPopUpID") as!  popupViewController
    self.addChildViewController(popOverVC)
    popOverVC.view.frame = self.view.frame
    self.view.addSubview(popOverVC.view)
    
    popOverVC.didMove(toParentViewController: self)

我是否必须驳回,例如:1.第一视图控制器(蓝色)2.主视图控制器(白色)3.弹出视图控制器
才能看到ARSCN视图吗

vsnjm48y

vsnjm48y1#

一种解决方案是按如下方式使用delegate:
在孩子的视图中。(示例)

protocol ChildrenViewControllerDelegate {
    func closeAll()
}

class ChildrenViewController: UIViewController {

    var delegate : ChildrenViewControllerDelegate?
    
    @IBAction func close(_ sender: UIButton) {
        delegate?.closeAll()
    }
...

并在父视图中设置ChildrenViewControllerDelegate,然后:

class ParentViewController: UIViewController, ChildrenViewControllerDelegate    

    func closeAll() {
            self.navigationController?.popViewController(animated:true)
    }

// Set/pass the delegate on children:

   override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            self.chindrenVc = segue.destination as? ChildrenViewController
            self.childrenVc?.delegate = self
   }

相关问题