2014-07-01 20 views
6

Mit Xamarin Forms, wie kann die Standardauswahl in einem PopoverController angezeigt werden? Der folgende Code wirft "Popovers kann nicht aus einer Ansicht präsentiert werden, die kein Fenster hat." auf iOS.Xamarin Forms Picker - Benutzerdefiniert UIPickerView

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); 
     } 
} 

Antwort

1

Ist this.Control.InputView der Blick aus dem Sie die popOverController präsentieren? Wenn ja, scheint es, dass zur Zeit der OnElementChanged() Ausführung, this.Control.InputView aus irgendeinem Grund kein Mitglied der Fensterhierarchie ist.

Sie können stattdessen Ihre Popover-Präsentation Aktion in einem überschriebenen MovedToWindow() oder ViewDidAppear() setzen. Ich weiß nicht, welcher Typ this.Control.InputView ist, aber Sie müssen eine dieser Methoden in diesem Typ überschreiben.