所以有一点我现在一直试图弄清楚没有运气。我想做的就是这样......
现在我想检查警报框中的文本字段是否为空,所以我所做的是在showAlertTapped函数中添加了一个检查变量,以检查文本字段是否为空。使用if语句进行segue,或者弹出第二个警告框。我的问题是弹出第二个警告框,要求输入有效名称,无论文本字段是否为空。我尝试改变一些东西,比如初始的bool检查变量,还要切换textField.text =="" to textField.text == nil,但所有这些都是segue两次都没有显示警告框。我尝试过的其他一些事情已经让我大吃一惊,但最终的结果总是一样的,无论是两次都是两次,还是第二次警告。所以我被卡住了。我将发布代码,以便更容易看到我是否完全遗漏了某些东西,如果我的格式化为此帖子,或者如果我的代码不是那么整洁,我会提前道歉。我仍然是一名初学者,随时随地学习。因此,如果我有一些草率或格式错误,我会愿意解决它。感谢您的时间。
func showAlertTapped() {
var check = true
//Create the AlertController
let firstAlert: UIAlertController = UIAlertController(title: "New questions deck", message: "Enter a name for your questions deck", preferredStyle: .Alert)
//Create and add the Cancel action
let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action -> Void in
}
firstAlert.addAction(cancelAction)
let saveAction: UIAlertAction = UIAlertAction(title: "Save", style: .Default) { action -> Void in
if check == true {
self.shouldPerformSegueWithIdentifier("saveSegue",sender: self)
}
else{
let alert: UIAlertController = UIAlertController(title: nil, message: "Please enter a valid name", preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: { (action) -> Void in
self.dismissViewControllerAnimated(true, completion: nil)
}))
//Present the AlertController
self.presentViewController(alert, animated: true, completion: nil)
}
}
firstAlert.addAction(saveAction)
//Add a text field
firstAlert.addTextFieldWithConfigurationHandler { textField -> Void in
if textField.text == "" {
check = false
}
textField.textColor = UIColor.blueColor()
}
//Present the AlertController
self.presentViewController(firstAlert, animated: true, completion: nil)
}
答案 0 :(得分:0)
无论设计如何,只需使代码正常工作:
问题:
if textField.text == "" {
check = false
}
此代码将无法按预期方式工作,块将在显示之前调用,而不会在文本字段更改时调用。见this document。
所以要修复它,你可以在用户点击保存按钮时检查文本字段是否为空:
let saveAction: UIAlertAction = UIAlertAction(title: "Save", style: .Default) { action -> Void in
let text = (firstAlert.textFields?[0] as UITextField).text
if text != nil && text!.characters.count>0 {
self.performSegueWithIdentifier("saveSegue",sender: self)
}
....other codes....
}
我没有测试代码,希望它能运行。如果有任何错误,请发表评论。