我在使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!
有人知道为什么没有出现这个吗?
非常感谢任何帮助或建议!
答案 0 :(得分:0)
当你进行调用以呈现UIAlertController这一事实时,self.view不在屏幕上。如果您在viewDidLoad()
部分编写此代码,则无法使用此功能。自我视图仍在屏幕外。
一旦self.view可用,您就可以进行此调用,例如在viewDidAppear()
中或从任何类型的UI操作(如单击按钮)。基本上,在viewDidDisappear()
之前发生的任何事情。
如果你想阅读它,有一个similar question有相似的信息,而对于一个更普遍的情况,还有here,即尝试提供任何类型的视图控制器。查看层次结构。