gpt4 book ai didi

ios - 如何在更改数据源内容后更新 UIPickerview

转载 作者:行者123 更新时间:2023-11-29 05:55:29 52 4
gpt4 key购买 nike

我在 iPad 模拟器上运行的 ios 程序中有 2 个 UIPickerView。它们各有一个组件。我通过使用标签上的开关找到相关的选择器 View 。两个单一组件 View 需要通过添加或删除组件来更改。这在数据源中很容易pickerData.append(textInput)pickerData.sort()pickerData.reloadAllComponentspickerData.remove(at:lastDataSelected)picker.reloadAllComponents()其中lastDataSelected 是行整数。

这可以更改数据源,但在传输到 UIPickerViews 时不能完全更改。在我 ScrollView 之前,UIPickerView 显示不会更新。更准确地说,所选项目是正确的,但文本标签未更新。滚动后,数据标签全部正确显示。我尝试以编程方式从一端滚动到另一端,但这没有帮助。

那么我怎样才能告诉程序在用户不 ScrollView 的情况下更新 View 呢?picker.reloadInputViews() 没有帮助。

除此之外,项目(行)的数量不会更改以反射(reflect)选择器数据中的更改,因此在添加新项目时,最后一项会从列表中消失。那么第二个问题是如何让UIPickerView函数更新行数?

我无法找到任何动态更新选择器 View 的示例,因此希望有人可以帮助或为我指出正确的方向。我相信其余的代码是相当标准的,但我显然在更新过程中遗漏了一些东西。

override func viewDidLoad() {
super.viewDidLoad()
flvPicker = UIPickerView()
flvPicker.delegate = self
flvPicker.dataSource = self
flvPicker.tag = 0
}

func numberOfComponents(in pickerView: UIPickerView) -> Int {
switch pickerView.tag {
case 0:
return 1
case 1:
etc...
}
}
var numberOfRowsInComponent = 0
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
switch pickerView.tag {
case 0:
return flvPickerData.count
case 1:
etc...
}
}
func pickerView(_
pickerView: UIPickerView,
titleForRow row: Int, forComponent component: Int) -> String? {
switch pickerView.tag {
case 0:
return flvPickerData[row]
case 1:
etc...
}
}


func pickerView( _ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
switch pickerView.tag {
case 0:
flavourSelected = flvPickerData[row]
lastFlavourSelected = row
case 1: etc...
}
}

我认为问题实际上是如何在更改 UIPickerView 的数据源和行数后正确更新。

最佳答案

您可以使用 UIPickerView 中的 reloadComponent(_:) 方法。

关于ios - 如何在更改数据源内容后更新 UIPickerview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55213398/

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