5

使用 Xamarin 表单,如何更改默认选择器视图以显示在 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);
        }
}
4

1 回答 1

1

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

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

于 2015-04-10T08:20:34.330 回答