Xamarin.ios UIPickerView monotouch的UIPickerView模型GetView调用无限次

Xamarin.ios UIPickerView monotouch的UIPickerView模型GetView调用无限次,xamarin.ios,Xamarin.ios,我有一个UIPickerView,它使用自定义UIPickerViewModel覆盖UIPicker视图中显示的视图 当我第一次打开UIPickerView时,一切都进行得很顺利,我能够选择一个项目以及其他项目 如果所选项目是UIPicker中的第一个或第二个项目,我不会遇到任何问题。但是,如果我选择了第三项,请关闭选择器,然后再次尝试选择另一个选项,UIPickerView将不会显示在屏幕上 我发现我的PickerViewModel上的GetView方法被一次又一次地调用,用于所选行以及后面的

我有一个UIPickerView,它使用自定义UIPickerViewModel覆盖UIPicker视图中显示的视图

当我第一次打开UIPickerView时,一切都进行得很顺利,我能够选择一个项目以及其他项目

如果所选项目是UIPicker中的第一个或第二个项目,我不会遇到任何问题。但是,如果我选择了第三项,请关闭选择器,然后再次尝试选择另一个选项,UIPickerView将不会显示在屏幕上

我发现我的PickerViewModel上的GetView方法被一次又一次地调用,用于所选行以及后面的行。我是否做过任何可能导致这种行为的事情?下面是我的PickerViewModel

public class AddressPickerViewModel : UIPickerViewModel
{
    private ShippingView view;
    public AddressPickerViewModel(ShippingView view)
    {
        this.view = view;
    }

    private AddressPickerCell currentSelectedCell;
    public override UIView GetView(UIPickerView picker, int row, int component, UIView view)
    {
        if (view == null)
        {
            view = new AddressPickerCell();
            var views = NSBundle.MainBundle.LoadNib(AddressPickerCell.Key, view, null);
            view = Runtime.GetNSObject(views.ValueAt(0)) as AddressPickerCell;
        }

        var pickerCell = (AddressPickerCell)view;
        pickerCell.Selected = false;
        pickerCell.ShippingAddress = this.view.ViewModel.Addresses.ToArray()[row].Address;
        return view;

    }
    public override int GetComponentCount(UIPickerView v)
    {
        return 1;
    }
    public override int GetRowsInComponent(UIPickerView pickerView, int component)
    {
        return this.view.ViewModel.Addresses.Count;
    }
    public override void Selected(UIPickerView picker, int row, int component)
    {
        if (this.currentSelectedCell != null) 
        {
            this.currentSelectedCell.Selected = false;
        }
        view.ViewModel.SelectedAddress=
            this.view.ViewModel.Addresses.ElementAt(picker.SelectedRowInComponent(0));

        var cell = picker.ViewFor(row, component) as AddressPickerCell;
        if (cell != null)
        {
            this.currentSelectedCell = cell;
            this.currentSelectedCell.Selected = true;
        }


    }
    public override float GetComponentWidth(UIPickerView picker, int component)
    {
        if (component == 0)
            return 300f;
        else
            return 40f;
    }

    public override float GetRowHeight(UIPickerView picker, int component)
    {
        return 140f;
    }
}

嗨,你找到解决办法了吗?@VAAA不幸的是,我没有找到解决办法。:/我认为这是xamarin API的内部特性。