PickerRenderer中Xamarin ios(Forms)中的输入附件视图

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

Accessory View With Title

如何在Xamarin ios(Forms)中的PickerRenderer的工具栏中间添加标题“状态”?

xamarin.forms picker
1个回答
0
投票
您可以检查以下代码

using System; using xxx.iOS; using Foundation; using UIKit; using Xamarin.Forms; using Xamarin.Forms.Platform.iOS; [assembly: ExportRenderer(typeof(Picker), typeof(MyiOSPickerRenderer))] namespace xxx.iOS { public class MyiOSPickerRenderer : PickerRenderer, IUIPickerViewDelegate, IUIPickerViewDataSource { string SelectedValue; public MyiOSPickerRenderer() { } 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 { //here you can set the style of item!!! TextColor = UIColor.Blue, Text = Element.Items[(int)row].ToString(), TextAlignment = UITextAlignment.Center, }; return label; } [Export("pickerView:didSelectRow:inComponent:")] public void Selected(UIPickerView pickerView, nint row, nint component) { Control.Text = Element.Items[(int)row]; SelectedValue = Element.Items[(int)row]; } protected override void OnElementChanged(ElementChangedEventArgs<Picker> e) { base.OnElementChanged(e); if (Control != null) { SelectedValue = Element.Items[0]; UIPickerView pickerView = (UIPickerView)Control.InputView; pickerView.WeakDelegate = this; pickerView.DataSource = this; UIToolbar toolbar = (UIToolbar)Control.InputAccessoryView; UIBarButtonItem save = new UIBarButtonItem("Save", UIBarButtonItemStyle.Done, (object sender, EventArgs click) => { Control.Text = SelectedValue; toolbar.RemoveFromSuperview(); pickerView.RemoveFromSuperview(); Control.ResignFirstResponder(); }); UIBarButtonItem Title = new UIBarButtonItem("States", UIBarButtonItemStyle.Done, null); UIBarButtonItem cancel = new UIBarButtonItem("Cancel", UIBarButtonItemStyle.Bordered, (object sender, EventArgs click) => { toolbar.RemoveFromSuperview(); pickerView.RemoveFromSuperview(); Control.ResignFirstResponder(); }); UIBarButtonItem empty = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace, null); toolbar.Items = new UIBarButtonItem[] { cancel, empty, Title, empty, save }; } } } }

© www.soinside.com 2019 - 2024. All rights reserved.