我怎样才能关闭一个 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)
})
}
}
我目前无法在关闭 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)
})
}
}