[用户单击不滚动时如何更改所选项目

问题描述 投票:0回答:1

我在选择器更新模式上遇到问题搜索后找到此行“ iOSSpecific:Picker.UpdateMode="WhenFinished"”添加到我的自定义选择器后,所选项目未更改

protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
    base.OnElementChanged(e);
    var extendedPicker = e.NewElement as CustomPicker;
    if (extendedPicker == null) return;

    var toolbar = new UIToolbar(new CGRect(0.0f, 0.0f, Control.Frame.Size.Width, 44.0f));

    toolbar.Items = new[]
    {
    new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
    new UIBarButtonItem("Yes",
        UIBarButtonItemStyle.Done,
        delegate {
            Control.ResignFirstResponder();
        })
    };

    if (this.Control != null)
    {
        Control.InputAccessoryView = toolbar;
    }
}
xamarin xamarin.forms xamarin.ios
1个回答
0
投票
选择值。

尝试使用渲染器中的跟踪代码:

public class CustomPickerRenderer : PickerRenderer, IUIPickerViewDelegate, IUIPickerViewDataSource { string SelectedValue; protected override void OnElementChanged(ElementChangedEventArgs<Picker> e) { base.OnElementChanged(e); SelectedValue = Element.Items[0]; UIPickerView pickerView = (UIPickerView)Control.InputView; pickerView.WeakDelegate = this; pickerView.DataSource = this; pickerView.Delegate = new deleagteClass(); var toolbar = new UIToolbar(new CGRect(0.0f, 0.0f, Control.Frame.Size.Width, 44.0f)); toolbar.Items = new[] { new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), new UIBarButtonItem("Yes", UIBarButtonItemStyle.Done, delegate { Control.ResignFirstResponder(); Control.Text = SelectedValue; }) }; if (this.Control != null) { Control.InputAccessoryView = toolbar; } } public nint GetComponentCount(UIPickerView pickerView) { return 1; } public nint GetRowsInComponent(UIPickerView pickerView, nint component) { return Element.Items.Count; } [Export("pickerView:viewForRow:forComponent:reusingView:")] public UIView GetView(UIPickerView pickerView, nint row, nint component, UIView view) { UILabel label = new UILabel { TextColor = UIColor.Black, Text = Element.Items[(int)row].ToString(), TextAlignment = UITextAlignment.Center, }; var picker = this.Element; return label; } [Export("pickerView:didSelectRow:inComponent:")] public void Selected(UIPickerView pickerView, nint row, nint component) { SelectedValue = Element.Items[(int)row]; } }

效果:

enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.