#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
, но вам нужно переопределить один из этих методов в этом типе.