我怎样才能关闭一个 viewcontroller 而同时继续到另一个

how can i dismiss a viewcontroller whilst at the same time segue onto a different one

我目前无法在关闭 viewcontroller 的同时让应用程序移动到不同的控制器而不会遇到一些错误。我的代码目前所做的是,当计时器 'secondsRemaining' 归零时,它将关闭当前的 viewcontroller 并显示当前 viewcontroller 下方显示的前一个 viewController成为 'homeScreenViewController'。因此,它不会调用代码 - self.performSegue(withIdentifier: "gameScreenToHighscore", sender: self).

当前代码:

@objc func updateTimer() {
            if secondsRemaining > 0 {
                secondsRemaining -= 1
                timerLabel.text = "Timer:\(secondsRemaining)"
                print(secondsRemaining)
            } else {
                self.dismiss(animated: true, completion: nil)
                self.performSegue(withIdentifier: "gameScreenToHighscore", sender: self)
                
            }
        }

我认为最好的方法是在 parent ViewController 中处理导航,您可以通过 delegate.

来实现

在孩子ViewController:

@protocol ModalVCDelegate {
    func navigateToTheSecondVC()
}

class ModalViewController {
    weak delegate: ModalVCDelegate!
}

并且您应该在计时器完成后调用委托方法。

delegate?.navigateToTheSecondVC()

而且在 ParentViewController 中,您应该设置委托:

childVC.delegate = self
present(childVC, animated: true, completion: nil)

然后:

extension MainViewController: ModalVCDelegate {
    func navigateToTheSecondVC {
       dismiss(animated: true, completion: {
            self.performSegue(withIdentifier: "gameScreenToHighscore", sender: self)
       })
    }
}