Swift - 强制用户在UIAlertController

时间:2015-08-09 17:26:02

标签: ios swift validation uialertcontroller

我想在我的某个应用中查询用户的姓名。我想检查以确保用户输入非空字符串,然后在输入无效时重新提示用户输入错误消息。到目前为止,这就是我所拥有的:

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()方法中?感谢。

1 个答案:

答案 0 :(得分:2)

不要使用while循环。只需检查警报的完成处理程序中的名称是否为空。如果为空,请再次致电WorkSheet;否则你需要做任何事情。你可能不应该从这个方法中返回任何东西,因为它是异步的;相反,将名称从警报的完成处理程序中传递给另一个方法。