我已经生成了一个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"在警告信息中屏幕变黑了?
任何帮助将不胜感激..
答案 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)
}