UIAlertController转到新的ViewController

时间:2017-02-26 23:08:58

标签: swift uiviewcontroller uialertcontroller

我已经生成了一个UIAlert,我想链接它以打开一个新的viewController。我为每个不同的viewcontrollers添加了新文件,并将该类链接起来。

我的代码是..

@IBAction func CorrectButton(_ sender: UIButton) {

    let refreshAlert = UIAlertController(title: "Correct Answer", message: "Congratulations", preferredStyle: UIAlertControllerStyle.alert)

    let vc = ThirdViewController()

    refreshAlert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action: UIAlertAction!) in self.present(vc, animated: true, completion: nil)

    }))

    present(refreshAlert, animated: true, completion: nil)
}

基本上当用户点击正确的答案时,警报会弹出,然后当用户点击" OK"我想要一个新的viewcontroller弹出应用程序的下一部分。当前发生的一切都是当我点击" ok"在警告信息中屏幕变黑了?

任何帮助将不胜感激..

1 个答案:

答案 0 :(得分:2)

在okButton的完成处理程序中安装要转到的viewController。

这是我使用的一个例子。它是一个我可以从任何地方调用的类函数,我已经硬编码了视图控制器,我想去哪个是导航控制器的一部分,只需将“LogInNavCont”更改为viewcontrolller的故事板ID,将UINavigationController更改为UIViewController,如果它是独立的viewController。

如果您不想将它用作类函数,只需将className.present替换为self.present

class func createAlertAndGoToLogin(errorTitle: String, errorMessage: String, className: UIViewController) {
    let alert = UIAlertController(title: errorTitle, message: errorMessage, preferredStyle: UIAlertControllerStyle.alert)
    alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action) in

        // go back to the login view controller
        // go back through the navigation controller

            let vc = className.storyboard!.instantiateViewController(withIdentifier: "LogInNavCont") as! UINavigationController
            className.present(vc, animated: false, completion: nil)


    }))
    className.present(alert, animated: true, completion: nil)
}