我想在我的某个应用中查询用户的姓名。我想检查以确保用户输入非空字符串,然后在输入无效时重新提示用户输入错误消息。到目前为止,这就是我所拥有的:
while name == "" {
name = promptUserForName()
}
并且promptUserForName()方法是这样的:
private func promptUserForName() -> String {
let alert = UIAlertController(title: "Enter your name:", message: nil, preferredStyle: .Alert)
// Presents a keyboard for user to enter name
var userInputField: UITextField?
alert.addTextFieldWithConfigurationHandler { (textField: UITextField!) in
userInputField = textField
}
var name: String = ""
let defaultAction = UIAlertAction(title: "OK", style: .Default, handler: {(action) -> Void in
if let userInfo = userInputField!.text {
name = userInfo
}
})
alert.addAction(defaultAction)
self.presentViewController(alert, animated: true, completion: nil)
return name
}
不幸的是,while循环只是无限循环而不提示用户并等待响应。有没有办法让这个工作,也许通过将while循环放在promptUserForName()方法中?感谢。
答案 0 :(得分:2)
不要使用while循环。只需检查警报的完成处理程序中的名称是否为空。如果为空,请再次致电WorkSheet
;否则你需要做任何事情。你可能不应该从这个方法中返回任何东西,因为它是异步的;相反,将名称从警报的完成处理程序中传递给另一个方法。