AlertController试图在视图中呈现而不是在窗口层次结构中

时间:2018-01-28 14:19:01

标签: swift alert

试图找出我收到此错误的原因。我有一个带有两个viewcontrollers的单一视图应用程序。按钮触摸我有第二个vc的segue:

@IBAction func showAccount(_ sender: Any) {
    performSegue(withIdentifier: "toAccountFromRoot", sender: self)
}

我有一个Facade模式,设置了一个Controller文件和几个帮助文件。我在AccountViewController文件上设置了控制器:

let myController = Controller.sharedInstance

其中一个帮助文件是设置一个中央AlertController以简化警报(没有额外的按钮)。它有一个方法,presentAlert需要一些参数,警报标题,消息,演示者。

在我的AccountViewController上,我试图使用以下代码显示警告:

myController.alert.presentAlert("No Agent", "You have not registered an agent yet.", self)

在AlertManager文件中,presentAlert如下所示:

func presentAlert(_ title:String, _ message:String, _ presenter:UIViewController) {

    let myAlert = UIAlertController(title: title, message: message, preferredStyle: .alert)

    let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
    myAlert.addAction(okAction)

    presenter.present(myAlert, animated:true, completion:nil)
}

我在很多应用程序中都没有遇到任何问题,所以我很困惑为什么编译器认为AccountViewController视图不在窗口层次结构中。

1 个答案:

答案 0 :(得分:0)

然后敲打它,键入所有这些,然后我在5秒后解决了它。为了防止其他人遇到同样的问题,我试图在viewDidLoad中显示警报,应该在viewDidAppear中进行。