Xamarin表单选择器 - 自定义UIPickerView

Phi*_*hil 6 xamarin.ios xamarin xamarin.forms

使用Xamarin Forms,如何更改默认选择器视图以在PopoverController中显示?下面的代码抛出"弹出窗口无法从没有窗口的视图中呈现".在iOS上.

public class BindablePickerRenderer : PickerRenderer {
        private UIPickerView picker;

        protected override void OnElementChanged(ElementChangedEventArgs<Picker> e) {
            base.OnElementChanged(e);

            this.picker = new UIPickerView() {
                Source = (UIPickerViewModel) new PickerSource(e.NewElement)
            };

            var popoverContent = new UIViewController();
            popoverContent.View = picker;


            var popoverController = new UIPopoverController(popoverContent);
            popoverController.PopoverContentSize = new SizeF(320, 180);
            popoverController.PresentFromRect(picker.Frame, this.Control.InputView, UIPopoverArrowDirection.Up, true);
        }
}
Run Code Online (Sandbox Code Playgroud)

Nov*_*Joe 1

this.Control.InputView您所呈现的观点是popOverController?如果是这样,则无论出于何种原因,在执行时OnElementChanged(),您this.Control.InputView似乎都不是窗口层次结构的成员。

您可能希望将 popOver-presenting 操作放在覆盖的MovedToWindow()或中ViewDidAppear()。我不知道你的类型this.Control.InputView是什么,但你需要重写该类型中的其中一个方法。