Как сделать пу sh контроллер после увольнения представленного контроллера в swift? - PullRequest
1 голос
/ 11 февраля 2020

Привет, я показываю контроллер (A) в главном контроллере в стиле презентации (не pu sh), и я хочу нажать кнопку и pu sh другой контроллер (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)

}

1 Ответ

1 голос
/ 11 февраля 2020

Сначала вам нужно сделать этот переход легким слабым

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()
        }
...