【问题标题】:Swift: how to add a custom input view in an UIAlertController?Swift:如何在 UIAlertController 中添加自定义输入视图?
【发布时间】:2015-11-20 20:38:48
【问题描述】:

我在 UIAlertController 下添加了一个登录表单,以从网页获取一些 xml 数据。我需要输入用户名、密码和日期。为此,我使用 .addTextFieldWithConfigurationHandler 方法将 3 个文本字段添加到 UIAlertController 的实例。在其中一个中,我将输入视图更改为 UIDatePicker。交易是我需要添加一个带有 UIBarButton 项的 UIToolBar 来制作“完成”按钮来完成输入。一切都做得很好,除了我无法访问 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)
    }

非常感谢,如果您有任何建议,请告诉我。

我是一名新手(而不是全职)程序员,如果有什么方法可以帮到别人,也请告诉我。

【问题讨论】:

    标签: ios swift cocoa-touch swift2 uialertcontroller


    【解决方案1】:

    UIAlertController 的属性之一是,当它显示时,用户将无法与背景中的任何 UI 元素进行交互。因此,当警报控制器启动时,您希望用户能够使用的任何东西都需要成为该警报控制器的一部分。

    这里有一个很棒的tutorial by NSHipster,它会检查警报控制器。

    【讨论】:

    • 感谢我在 NSHipster 上阅读了相同的教程。那么有什么办法可以做到这一点吗?通过向 UIBarButtonItem 添加观察者?我所有的线索都没有了。我也尝试将 UIBarButtonItem 添加为类变量,但没有用。
    • 我也将它们添加到警报操作中,但现在我无法显示 NSDatePicker。
    • 我不太了解您的具体情况,无法确定最佳解决方案是什么,但我会考虑使用模态视图控制器而不是警报控制器。这将允许您向屏幕添加更多元素,并按照您的意愿使用日期选择器。
    猜你喜欢
    • 2018-09-16
    • 2015-08-13
    • 1970-01-01
    • 2015-12-23
    • 2021-11-06
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多