具有三列的 uipickerview - xamarin c#

uipickerview with three columns - xamarin c#

我想要一个包含三列的 UIPickerView,但无法正常工作。 我找不到错误,请有人帮忙。 下面是代码:

static string[] nomesPeso = new string[]
{
    "Back Squat",
    "Front Squat",
    "OHS - Overhead Squat"
};

static string[] nomesUnidades = new string[]
{
    "Reps",
    "Kgs",
    "Lbs",
    "Metros"
};

static string[] nomesRepeticoes = new string[]
{
    "1 RM",
    "2 RM",
    "3 RM"
};

public override nint GetComponentCount(UIPickerView v)
{
    return 3;
}

public override nint GetRowsInComponent(UIPickerView pickerView, nint component)
{
    switch (component)
    {
        case 0:
            return nomesPeso.Length;
        case 1:
            return nomesRepeticoes.Length; 
        case 2:
            return nomesUnidades.Length;
        default:
            throw new NotImplementedException();
    }
}

public override string GetTitle(UIPickerView picker, nint row, nint component)
{
    switch (component)
    {
        case 0:
            return nomesPeso[row];
        case 1:
            return nomesRepeticoes[row]; 
        case 2:
            return nomesUnidades[row];
        default:
            throw new NotImplementedException();
    }
}

您可以通过覆盖 UIPickerViewDelegateGetComponentWidth 来调整列宽:

class MyPickerViewDelegate : UIPickerViewDelegate
{
    public override nfloat GetComponentWidth(UIPickerView pickerView, nint component)
    {
        // equal size for every column
        return pickerView.Frame.Width/3;
    }
}

然后在您的 UIPickerView

上设置它
myPickerView.Delegate = new MyPickerViewDelegate();

此代码平均分配列。当然,您可以使用 component 参数 return 自定义每列的宽度。