Xamarin Forms Picker - Custom UIPickerView

Using Xamarin Forms, how can I change the default selection view to display in PopoverController? In the code below, the throws "Popovers cannot be represented from a point of view that does not have a window." on 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); } } 
+6
source share
1 answer

Is there this.Control.InputView view from which you are representing popOverController ? If so, it seems that at runtime OnElementChanged() your this.Control.InputView for some reason not a member of the window hierarchy.

Instead, you can put your popOver view action in an overridden MovedToWindow() or ViewDidAppear() . I do not know what type your this.Control.InputView , but you need to override one of these methods in this type.

+1
source

Source: https://habr.com/ru/post/971625/


All Articles