使用 Xamarin Forms,如何将默认选择器 View 更改为在 PopoverController 中显示?下面的代码抛出“无法从没有窗口的 View 中呈现弹出窗口。”在 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);
}
}
最佳答案
是 this.Control.InputView
您呈现的 View popOverController
?如果是这样,似乎在OnElementChanged()
的时候执行,您的 this.Control.InputView
无论出于何种原因,都不是窗口层次结构的成员。
你可能想把你的 popOver 呈现 Action 放在一个被覆盖的 MovedToWindow()
中。或 ViewDidAppear()
.我不知道你是什么类型的this.Control.InputView
是,但您需要覆盖该类型中的其中一种方法。
关于xamarin.ios - Xamarin 表单选择器 - 自定义 UIPickerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24518887/