UIAlerts 的问题

Trouble with UIAlerts

我在使 UIAlerts 工作时遇到了一些问题。我已经看过几个似乎可以解决这个问题的 SO 问题,但我仍然有问题。似乎没有显示警报视图。这是我的代码:

        var inputTextField: UITextField?

        let actionSheetController: UIAlertController = UIAlertController(title: "Create a password", message: "", preferredStyle: .Alert)

        let save: UIAlertAction = UIAlertAction(title: "Save", style: .Default) { action -> Void in
            if !(inputTextField?.text=="password"){
                println(inputTextField?.text)
            }else{
                println("You have a really bad password")
            }
        }
        actionSheetController.addAction(save)
        actionSheetController.addTextFieldWithConfigurationHandler { textField -> Void in
            inputTextField = textField
        }
        self.presentViewController(actionSheetController, animated: true, completion: nil)

这里是错误:

Attempt to present <UIAlertController: 0x7fa7016305e0> on <PassProtect.ViewController: 0x7fa701576600> whose view is not in the window hierarchy!

有谁知道为什么没有显示这个?

非常感谢任何帮助或建议!

这是因为当您调用显示 UIAlertController 时,self.view 不在屏幕上。如果您在 viewDidLoad() 部分编写此代码,这将不起作用,因为 self.view 仍在屏幕外。

您可以在 self.view 可用后进行此调用,例如在 viewDidAppear() 中或通过任何类型的 UI 操作(例如单击按钮)。基本上,在 viewDidDisappear().

之前发生的任何事情

有一个 similar question with similar information if you want to read it and also here 用于更普遍的情况,即尝试呈现不在视图层次结构中的任何类型的视图控制器。