Средство выбора форм Xamarin — пользовательский UIPickerView

#xamarin.ios #xamarin #xamarin.forms

#xamarin.ios #xamarin #xamarin.forms

Вопрос:

Используя формы 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);
        }
}
  

Ответ №1:

Является this.Control.InputView представлением, из которого вы представляете popOverController ? Если это так, кажется, что во время OnElementChanged() выполнения ваш this.Control.InputView по какой-либо причине не является членом иерархии окон.

Возможно, вы захотите вместо этого поместить свое действие, представляющее всплывающее окно, в переопределенное MovedToWindow() или ViewDidAppear() . Я не знаю, какой у вас тип this.Control.InputView , но вам нужно переопределить один из этих методов в этом типе.