如何在swift中关闭当前控制器后推送控制器?

如何在swift中关闭当前控制器后推送控制器?,swift,swift-protocols,pushviewcontroller,presentviewcontroller,Swift,Swift Protocols,Pushviewcontroller,Presentviewcontroller,嘿,我正在主控制器中显示一个呈现样式的控制器(a),我想点击按钮并按下另一个控制器(B),在关闭这个(a)控制器后,这种情况发生在主控制器中。在这种情况下,我使用协议。有什么想法吗?代码如下所示 //this is dismiss button action var segueDelegate: segueFromController? @objc func dismissController() { self.dismiss(animated: true) {

嘿,我正在主控制器中显示一个呈现样式的控制器(a),我想点击按钮并按下另一个控制器(B),在关闭这个(a)控制器后,这种情况发生在主控制器中。在这种情况下,我使用协议。有什么想法吗?代码如下所示

//this is dismiss button action

   var segueDelegate: segueFromController?

   @objc func dismissController() {

    self.dismiss(animated: true) {
        self.segueDelegate?.segueFromController()
    }

//and this one is protocol function in main controller


    func segueFromController() {

     let contProfile = ContViewController(collectionViewLayout: UICollectionViewFlowLayout())

           navigationController?.pushViewController(contProfile, animated: true)

}

// and I am making "self" this protocol in main controller's didload

  let aCont = AController()

  override func viewDidLoad() {
            super.viewDidLoad()

            AController.segueDelegate = self
 }

 // protocol

protocol segueFromController { 
  func segueFromController()  
  }

// this is presenting (A) controller code in main page

func openController() {
            let preController = AController()
        preController.modalPresentationStyle = .fullScreen
        self.present(preController, animated: true, completion: nil)

}

首先,您需要使此segueDelegate变弱

protocol segueFromController : class {
func segueFromController()
}
weak var segueDelegate: segueFromController?

func openController() {
            let preController = AController()
         preController.segueDelegate = self
        preController.modalPresentationStyle = .fullScreen
        self.present(preController, animated: true, completion: nil)

}
尝试在没有动画的情况下关闭

self.dismiss(animated: false) {
             self.segueDelegate?.segueFromController()
        }

您面临的问题是什么?当我点击“关闭”按钮时,它正在关闭控制器并打开主控制器,但未按下(B)controllersegueFromController函数正在调用?否。这就是问题。给出此错误:“弱”不能应用于非类绑定的“segueFromController”;考虑添加一个具有类边界的协议一致性来共享测试项目,我可以共享测试项目。抱歉,我是通过此网站了解swiftwetransfer.com的新手。我正在主页中打开(控制器)。。在编辑中添加