gpt4 book ai didi

swift - 当我选择不同的 UITextField 时如何更改 UIPickerViewData?

转载 作者:行者123 更新时间:2023-11-30 11:06:16 26 4
gpt4 key购买 nike

我想在点击 UITextField 时显示 UIPickerView。

我用 UIPickerView 创建了一个“地方”UITextField。

但是,我不知道如何使用 UIPickerView 制作另一个 UITextField。

我尝试使用“switch”,但 UITextField 不是一个值,所以我无法使用“switch”来做到这一点。

当我选择不同的 UITextField 时,我想更改 UIPickerViewData。

我该怎么办?

这是代码。

谢谢!

@IBOutlet weak var place: UITextField!
@IBOutlet weak var product: UITextField!
@IBOutlet weak var number: UITextField!

let placeArray = ["A", "B", "C", "D", "E", "F"]
let productArray = ["Apple", "Banana", "Grape"]
let numberArray = ["1", "2", "3", "4", "5", "6"]

var pickerView = UIPickerView()
var textField: UITextField!

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

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

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
place.text = placeArray[row]
}

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



override func viewDidLoad() {
super.viewDidLoad()

pickerView.delegate = self
pickerView.dataSource = self

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(displayPickerView))
tapGesture.numberOfTapsRequired = 1
place.addGestureRecognizer(tapGesture)

}


@objc private func displayPickerView() {
if textField == nil {
self.textField = UITextField(frame: .zero)
textField.inputView = self.pickerView
self.view.addSubview(textField)
}
textField.becomeFirstResponder()
}

最佳答案

非常简单的方法来做到这一点。

var placePickerView = UIPickerView()
var productPickerView = UIPickerView()
var numberPickerView = UIPickerView()

override func viewDidLoad() {
super.viewDidLoad()

placePickerView.delegate = self
placePickerView.dataSource = self
place.inputView = placePickerView

productPickerView.delegate = self
productPickerView.dataSource = self
product.inputView = productPickerView

numberPickerView.delegate = self
numberPickerView.dataSource = self
number.inputView = numberPickerView

}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
var numberOfRows: Int = 1
if pickerView == placePickerView {
numberOfRows = placeArray.count
} else if pickerView == productPickerView {
numberOfRows = productArray.count
} else if pickerView == numberPickerView {
numberOfRows = numberArray.count
}
return numberOfRows
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView == placePickerView {
place.text = placeArray[row]
} else if pickerView == productPickerView {
productType.text = productArray[row]
} else if pickerView == numberPickerView {
transactionType.text = numberArray[row]
}
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
var title: String?
if pickerView == placePickerView {
title = placeArray[row]
} else if pickerView == productPickerView {
title = productArray[row]
} else if pickerView == numberPickerView {
title = numberArray[row]
}
return title
}

关于swift - 当我选择不同的 UITextField 时如何更改 UIPickerViewData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52684662/

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