gpt4 book ai didi

ios - 用于多 UITextField 的 UIPickerView

转载 作者:行者123 更新时间:2023-11-30 12:17:12 25 4
gpt4 key购买 nike

我试图在一个 View 中的每个文本字段中包含 UIPickerView 。当我选择第一个文本字段中的值时,它强制第二个文本字段显示相同的值。

我试图为每个人提供不同的值(value)。

@IBOutlet var gpaFieldOne: UITextField!
@IBOutlet var gpaFieldTwo: UITextField!
@IBOutlet var gpaResult: UILabel!

let picker = UIPickerView()
var grades = ["A","B","C","D","F"]

func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return grades.count
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return grades[row]
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
gpaFieldOne.text = grades[row]
self.view.endEditing(false)
gpaFieldTwo.text = grades[row]
self.view.endEditing(false)
}

override func viewDidLoad() {
super.viewDidLoad()

picker.delegate = self
picker.dataSource = self
gpaFieldOne.inputView = picker
gpaFieldTwo.inputView = picker
}

最佳答案

您的didSelectRow每次都会设置两个文本字段。您只需设置当前文本字段的文本,而不是两者。

您需要进行一些更改才能跟踪当前文本字段。

首先添加一个新属性:

var currentTextField: UITextField?

确保您设置了两个文本字段的委托(delegate)。在 Storyboard中建立连接或在代码中设置它们(在 viewDidLoad 中)。

实现textFieldDidBeginEditing方法:

func textFieldDidBeginEditing(_ textField: UITextField) {
currentTextField = textField
}

现在将您的 didSelectRow 更新为以下内容:

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if let currentTextField = currentTextField {
currentTextField.text = grades[row]
currentTextField.resignFirstResponder()
self.currentTextField = nil
}
}

关于ios - 用于多 UITextField 的 UIPickerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45261158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com