我正在创建注册屏幕,并在后端使用firebase sdk。我已经在我的注册表单中添加了条件,并且如果在表单中文本字段为空并且按下注册按钮的任何时候,我正在显示带有标题,消息和确定按钮的UIAlertView
。但是我在运行应用程序
应用程序试图在其自身上显示模式视图控制器。呈现控制器为
。
显示堆栈,并在错误堆栈的末尾显示
libc ++ abi.dylib:以类型为NSException的未捕获异常终止
我的警报功能的代码是
func ShowAlert(Title:String,Message:String){
let alert = UIAlertController(title: Title, message: Message, preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title:"OK", style: UIAlertActionStyle.default, handler: { (action) in
alert.dismiss(animated: true)
}))
alert.present(alert,animated: true)
}
我感觉是它的一些主线程问题,但我不知道如何解决。
答案 0 :(得分:2)
当前的视图控制器应该显示警报,因此……
present(alert,animated: true)
而不是
alert.present(alert,animated: true)
更新
从您的评论看来,您好像是想在后台线程上显示警报。 除上述内容之外,您还应始终在主线程上显示警报(或执行任何UI操作)...
DispatchQueue.main.async {
showAlert(title: "My title", message: "My Message")
}
旁注
Swift中的所有变量,参数和函数名称都应以小写字母开头,例如
func showAlert(title: String, message: String)
代替
func ShowAlert(Title:String,Message:String)