在我的应用游戏结束时,我想重设游戏以便再次玩。
我尝试了代码中显示的推荐方法,但是会导致:
线程1:信号SIGABRT错误发生。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "ViewController")
var viewcontrollers = self.navigationController!.viewControllers
viewcontrollers.removeLast()
viewcontrollers.append(vc)
self.navigationController!.setViewControllers(viewcontrollers, animated: true)
期望能够重置游戏/应用并通过按下按钮继续进行新游戏。
答案 0 :(得分:0)
你可以试试吗?
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "ViewController")
let transition: UIView.AnimationOptions = .transitionFlipFromLeft
let rootviewcontroller: UIWindow = ((UIApplication.shared.delegate?.window)!)!
rootviewcontroller.rootViewController = vc
let mainwindow = (UIApplication.shared.delegate?.window!)!
UIView.transition(with: mainwindow, duration: 0.4, options: transition, animations: nil, completion: nil)
答案 1 :(得分:0)
如果您(重新)开始的ViewController
类是您rootViewController
的{{1}},那么您可以简单地调用:
UINavigationController
尝试避免使用bang运算符(navigationController?.popToRootViewController(animated: true)
)以避免类似的强制展开崩溃,例如,您可以像这样安全地展开!
:
navigationController