UIPickerView: 是否有可能在 UIPicker 视图中显示上一个选定值? 例如:滚动PickerView并从列表中选取 "2",第二次打开选取器时,PickerView中的值应显示为 "2"。

Yonglun Liu (Shanghai Wicresoft Co,.Ltd.) 37,266 信誉分 Microsoft 供应商
2024-02-28T08:51:52.1+00:00

在PickerView Delegate中: "Selected " delegate 函数可用于获取选中值。但无法在PickerView 中设置选中值.

  注意:此问题总结整理于:UIPickerView: Is it possible to show the previous selected value in the UIPicker view? - Microsoft Q&A  

Xamarin
Xamarin
用于使用 .NET 和 C# 构建 Android 和 iOS 应用的 Microsoft 开源应用平台。
13 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Wenyan Zhang (Shanghai Wicresoft Co,.Ltd.) 27,516 信誉分 Microsoft 供应商
    2024-02-28T09:15:16.2933333+00:00

    你好,

    您可以使用 UIPickerView.Select(nint, nint, Boolean)方法设置选中值,请参考以下代码:

    在自定义 UIPickerView 中添加选定方法

    public void DefultSelect(string selectedYear, string selectedMonth)
            {
                if (this.SelectedYear != null && this.SelectedMonth != null)
                {
                    var yearIndex = yearArray.IndexOf(selectedYear);
                    var monthIndex = monthArray.IndexOf(selectedMonth);
                    PickerViewDelegate pickerDelegate = (PickerViewDelegate)this.Delegate;
                    this.Select(yearIndex, 0, true);
                    this.Select(monthIndex, 1, true);
                }
            }
    

    在 ViewController 中调用此方法进行测试

    clickbutton.TouchUpInside += delegate
                {
                    //获取选中的年份和月份
                    customLabel.Text = customPicker.SelectedYear +"-" + customPicker.SelectedMonth;
                    customPicker.Hidden = true;
                };
    

    设置默认选中值

    checkSelectbutton.TouchUpInside += delegate
                {
                    customPicker.Hidden = false;
                    string[] words = customLabel.Text.Split('-');
                    string defaultYear = words[0];
                    string defaultMonth = words[1];
                    customPicker.DefultSelect(defaultYear, defaultMonth);// 设置值,我从Label中获取选中值,您可以根据需要存储值(和获取值
                };
     
    

    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助