我在斯威夫特3得到以下错误:试图提出alertcontroller谁的观点是不是在窗口层次
Attempt to present alertcontroller whose view is not in window hierarchy
我已经提到的其他职位有关这个主题无济于事。更具体地说,我已经实施了本文中建议的更改:AlertController is not in the window hierarchy
而且我仍然收到相同的错误。
我所做的是:
创建AlertHelper.swift辅助类:
class AlertHelper {
FUNC showAlert(fromController控制器:UIViewController中){ 设警报= UIAlertController(标题: “请再试一次”,消息:“电子邮件已在使用中”,preferredStyle:.alert) controller.present(alert,animated:true,completion:nil) } }
在我的View Controller中,按下按钮时调用的函数下,检查用户输入的电子邮件地址是否已存储在我的Firebase数据库中,如果存在,我尝试呈现在“电子邮件已在使用”警报从AlertHelper类:
Auth.auth().createUser(withEmail: email, password: password) { (user, error) in if error != nil { if let errCode = AuthErrorCode(rawValue: error!._code) { switch errCode { case .emailAlreadyInUse: let alert = AlertHelper() alert.showAlert(fromController: self) return default: print("other error") } } } else { // Inputs user email into database self.ref.child("Users").child((user?.uid)!).setValue(["Email": email, "Location": ""]) self.performSegue(withIdentifier: "todorm", sender: self) } }
数据库东西的作品,未出现的唯一的事情就是报警。有任何想法吗?谢谢!!
我试过这个方法也和我仍然得到同样的UIAlertController不能在窗口层次错误。以下是一件奇怪的事情:当我尝试在简单的if-else语句中显示警报时,它会起作用。但是,当我尝试在嵌套在另一个函数调用(如上所示)中的if语句中显示警报时,出现错误。 –
检查createUser方法是否创建控制器实例。它可能会在现有的控制器之上显示一个新的控制器,因此当您尝试在现有的控制器上显示时,会发生错误。 –
我怀疑是这种情况。如果是这样,我将如何解决它? –