ios - 在没有按钮的情况下选择选项选择/关闭 UIPickerView 时更新文本字段?

标签 ios swift uitextfield uipickerview

我正在使用 Swift 2 在 Xcode 7 中工作。

我在文本字段中设置了 UIPickerViews,它们都在正常工作。我使用以下方法关闭 pickerviews:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    pickerOptions.resignFirstResponder()
    (etc.)
}

我的问题是我有一个 pickerview,我希望它成为一个“预设”菜单,它将通过选择一个 pickerview 值来用一组值更新 3 个常规文本字段输入,而无需使用按钮更新值。我不完全确定如何解决这个问题,因为我对代表还不是很熟悉(如果它甚至涉及他们的话)。我真的不知道如何更新/刷新 ViewController。

我猜它与 textFieldDidEndEditing 有关(因为我已经通过设置 UIPickerView 设置了这些类:UIPickerViewDataSourceUIPickerViewDelegate, UITextFieldDelegate)感谢任何帮助:)

最佳答案

一切都与代表有关。我知道你有一个 pickerView 应该根据用户选择设置一些 textFields 的内容。 pickerView 是一个库存对象,它需要告诉您的类(class)正在发生什么,而无需了解您的类(class)的任何具体信息。它通过说,如果你实现我定义的这个协议(protocol),那么我会调用你的函数来让你知道。对于 pickerView,相关协议(protocol)是 UIPickerViewDelegate,它公开了一个名为 delegate 的属性,该属性只能设置为实现该协议(protocol)的对象。如果设置了 pickerView 的委托(delegate),它将在用户滚动 pickerView 时调用该对象的 pickerView:didSelectRow:inComponent: 函数。

您只需创建一个符合 UIPickerViewDelegate 协议(protocol)的对象,并相应地设置 pickerView 的 delegate 属性。通常情况下,您只是将此功能添加到您的 viewController 中,如下所示:

class viewController: UIViewController, UIPickerViewDelegate {
    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        // Now you can update the textField(s)
    }
}

请注意,pickerView:didSelectRow:inComponent: 的定义被标记为可选。这意味着如果你说你实现了 UIPickerViewDelegate,但没有定义它,编译器不会让你知道。如果您不小心拼错或签名错误,这可能会造成混淆 - 您会认为它已定义但永远不会被调用。

关于ios - 在没有按钮的情况下选择选项选择/关闭 UIPickerView 时更新文本字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35351797/

相关文章:

ios - 创建 GIDGoogleUser 的模拟实例

Swift 后台数据任务

objective-c - UITextField onText 已更改

ios - 将图像动态添加到原型(prototype)自定义单元格

ios - 在没有 UserInteraction 的情况下按下 ScrollView 中的按钮

ios - 当我设置 initwithstyle :UItableviewsubtitle 时,UITableViewCell 不显示字幕

swift - 如何在 swift 中的字典中插入值

ios - 计时器在 Viper 架构中的什么位置

ios - iOS 7.1 中 UISearchBar 的 UITextField

text - 如何声明文本字段只能包含整数?