gpt4 book ai didi

swift - UIPicker 设置默认值和更新组件

转载 作者:行者123 更新时间:2023-11-28 15:49:25 25 4
gpt4 key购买 nike

我有一个包含两个组件的 UIPicker。第二个组件中的值根据第一个组件选择而变化。

但是,如果我以编程方式设置第一个组件的值,则第二个组件不会更新。

此代码包含在 viewDidLoad() 中:

UnitPicker.dataSource = self;
UnitPicker.delegate = self;
UnitPicker.selectRow(temporaryTask.quantityFormat.rawValue, inComponent: 0, animated: false);
UnitPicker.reloadAllComponents();

if (UnitPicker.selectedRow(inComponent: 0) == 1)
{
UnitPicker.selectRow(temporaryTask.quantityUnit.rawValue, inComponent: 1, animated: false);
UnitPicker.reloadComponent(1);
}
else if (UnitPicker.selectedRow(inComponent: 0) == 2)
{
UnitPicker.selectRow(temporaryTask.quantityUnit.rawValue - 3, inComponent: 1, animated: false);
UnitPicker.reloadComponent(1);
}

这是委托(delegate)函数之一:

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
if (component == 0)
{
return units.count;
}
else if (component == 1)
{
if (pickerView.selectedRow(inComponent: 0) == 1)
{
return weightTypes.count;
}
else if (pickerView.selectedRow(inComponent: 0) == 2)
{
return timeTypes.count;
}
}

return 1;
}

预期结果(当用户选择第一个组件时):

Expected Result

实际结果(当我在代码中设置第一个组件时):

Actual Result

然后,如果用户选择“重量”,然后选择“时间”,则第二个组件会正确显示。

出于某种原因,它只显示一行,我认为这是因为“return 1;”行。

提前感谢您的任何回复:)

最佳答案

我想你弄错了 selectedRows 的索引

if (UnitPicker.selectedRow(inComponent: 0) == 1)
else if (UnitPicker.selectedRow(inComponent: 0) == 2)

应该是

if (UnitPicker.selectedRow(inComponent: 0) == 0)
else if (UnitPicker.selectedRow(inComponent: 0) == 1)

也对委托(delegate)执行此操作。

关于swift - UIPicker 设置默认值和更新组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42522930/

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