UIAlerts的问题

时间:2015-07-27 16:51:18

标签: ios swift xcode6.4

我在使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!

有人知道为什么没有出现这个吗?

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

1 个答案:

答案 0 :(得分:0)

当你进行调用以呈现UIAlertController这一事实时,self.view不在屏幕上。如果您在viewDidLoad()部分编写此代码,则无法使用此功能。自我视图仍在屏幕外。

一旦self.view可用,您就可以进行此调用,例如在viewDidAppear()中或从任何类型的UI操作(如单击按钮)。基本上,在viewDidDisappear()之前发生的任何事情。

如果你想阅读它,有一个similar question有相似的信息,而对于一个更普遍的情况,还有here,即尝试提供任何类型的视图控制器。查看层次结构。