0

在我的应用程序游戏结束时,我想重置以便可以再次玩游戏。

我尝试了代码中显示的推荐方法,但它导致:

线程 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)

期望能够通过按下按钮重置游戏/应用程序并继续进行新游戏。

4

2 回答 2

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)
于 2019-07-04T14:29:40.820 回答
0

如果您的(重新)开始ViewController课程是rootViewController您的,UINavigationController那么您可以简单地调用:

navigationController?.popToRootViewController(animated: true)

尽量避免使用 bang 运算符 ( !) 以避免类似的强制展开崩溃,例如,您可以安全地展开navigationController类似的操作:

if let navController = navigationController {
    navController.popToRootViewController(animated: true)
}
于 2019-07-04T15:39:25.260 回答