Xamarin表单选择器 - 自定义UIPickerView

时间:2014-07-01 20:38:25

标签: 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);
        }
}

1 个答案:

答案 0 :(得分:1)

this.Control.InputView是您展示popOverController的视图吗?如果是这样,似乎在OnElementChanged()执行时,无论出于何种原因,您的this.Control.InputView都不是窗口层次结构的成员。

您可能希望将您的popOver呈现操作放在被覆盖的MovedToWindow()ViewDidAppear()中。我不知道您的this.Control.InputView是什么类型,但您需要覆盖该类型中的其中一种方法。