gpt4 book ai didi

swift - UIPickerView 等待 didSelect 直到滚动动画完成

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

我有两个 UIPickerViews:pickerOnepickerTwopickerTwo 的内容取决于 pickerOne 中选择的内容。每个选择器所选项目的名称显示在 UITextField 中。

依赖关系示例:

如果pickerOne选择x,则pickerTwo将显示element1element2element3

如果pickerOne选择y,则pickerTwo将显示element4element5element6

我使用以下代码来执行此操作:

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView === pickerOne {
textFieldOne.text = pickerOneData[row].name

pickerTwoData = // Update the data.
pickerTwo.selectRow(0, inComponent: 0, animated: false)
}
else if pickerView === pickerTwo {
textFieldTwo.text = pickerTwoData[row].name
}
}


func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView === pickerOne {
return pickerOneData[row].name
}
else if pickerView === pickerTwo {
return pickerTwoData[row].name
}
}

现在我的问题是,如果我在 pickerOne 中选择一行,而 pickerTwo 中只有一行,这些选择器的行为会非常奇怪。

如果我在 pickerOne 中选择一行,而在 pickerTwo 中有几行,然后在 pickerOne 中选择只有一行的行在 pickerTwo 中。然后,根据我下一步的操作,我可能会收到 index out of range 错误。

如果我关闭UIPickerView (self.view.endEditing(true)),那么就没有问题,但如果我只选择pickerOne中的行pickerTwo 中只有一行,就会发生错误。

我怀疑这与您在 UIPickerView 上向上滑动时播放的动画有关,该动画使其滚动,因为它在停止滚动之前不会更新文本字段。

如果有人能指出我正确的方向,我将非常感激。

最佳答案

我设法修复了这个错误,但我仍然很困惑。我更改了 titleForRow 中的代码,现在它显示:

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView === pickerOne {
let name = pickerOneData[row].name
return name
}
else if pickerView === pickerTwo {
return pickerTwoData[row].name
}
}

我所做的只是先将名称保存在变量中,然后它就起作用了。

关于swift - UIPickerView 等待 didSelect 直到滚动动画完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40589043/

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