我将在UIAlertController下添加一个登录表单,以从web页面获取一些xml数据。我需要输入用户名、密码和日期。为此,我使用.addTextFieldWithConfigurationHandler方法向UIAlertController实例添加3个文本字段。在其中一个视图中,我将输入视图更改为UIDatePicker。我需要添加一个带UIBarButton项的UIToolBar,使一个“Done”按钮完成输入。一切都做得很好,除了我无法访问showSelectedDate()函数(该函数从未被调用)来关闭inputView并用日期设置UITextField.text属性。按钮在那里,但不可用。
这是我的密码。

loginDeCompraMercadoWebAlertController.addTextFieldWithConfigurationHandler { (textField) -> Void in
        //Declare my inputView, DatePicker and UIToolBar
        let toolBar = UIToolbar(frame: CGRectMake(0, 0, textField.frame.size.width, textField.frame.size.height))
        let datePicker = UIDatePicker()
        let formatter = NSDateFormatter()
        let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "showSelectedDate")
        let space = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
        toolBar.setItems([doneButton, space], animated: true)

        //Setup inputView and placeholders
        textField.placeholder = "Fecha de Compra"
        textField.inputView = datePicker
        textField.inputAccessoryView = toolBar
        textField.text = formatter.stringFromDate(datePicker.date)
    }

非常感谢,如果你有什么建议,请告诉我。
我是一个新手(而不是全职)程序员,如果有任何方法我可以对某人有用,请让我也知道。

最佳答案

UIAlertController的一个属性是,当它显示时,用户将无法与后台的任何UI元素交互。因此,当警报控制器启动时,您希望用户能够使用的任何内容都必须是警报控制器的一部分。
这里有一个很好的tutorial by NSHipster超过警报控制器。

10-07 19:04
查看更多