2016-04-15 4 views

Antwort

2

Haben Sie sich die Proben von Xamarin angesehen? Diese one insbesondere ist genau das, was Sie suchen, unten ist ein Code-Schnipsel, das eine benutzerdefinierte UIPickerView einrichtet.

Sieht aus wie Sie ein Modell erstellen, die eine Unterklasse von UIPickerViewModel ist, here die Dokumente von Xamarin auf dieser Klasse ist

void CreatePicker() 
    { 
     // 
     // Empty is used, since UIPickerViews have auto-sizing, 
     // all that is required is the origin 
     // 
     myPickerView = new UIPickerView (CGRect.Empty){ 
      AutoresizingMask = UIViewAutoresizing.FlexibleWidth, 
      ShowSelectionIndicator = true, 
      Model = new PeopleModel (this), 
      BackgroundColor = backgroundColor, 
      Hidden = true 
     }; 
     // Now update it: 
     myPickerView.Frame = PickerFrameWithSize (myPickerView.SizeThatFits (CGSize.Empty)); 
     View.AddSubview (myPickerView); 
    } 

    public class PeopleModel : UIPickerViewModel { 
     static string [] names = new string [] { 
      "Brian Kernighan", 
      "Dennis Ritchie", 
      "Ken Thompson", 
      "Kirk McKusick", 
      "Rob Pike", 
      "Dave Presotto", 
      "Steve Johnson" 
     }; 

     PickerViewController pvc; 
     public PeopleModel (PickerViewController pvc) { 
      this.pvc = pvc; 
     } 

     public override nint GetComponentCount (UIPickerView v) 
     { 
      return 2; 
     } 

     public override nint GetRowsInComponent (UIPickerView pickerView, nint component) 
     { 
      return names.Length; 
     } 

     public override string GetTitle (UIPickerView picker, nint row, nint component) 
     { 
      if (component == 0) 
       return names [row]; 
      else 
       return row.ToString(); 
     } 

     public override void Selected (UIPickerView picker, nint row, nint component) 
     { 
      pvc.label.Text = String.Format ("{0} - {1}", 
          names [picker.SelectedRowInComponent (0)], 
          picker.SelectedRowInComponent (1)); 
     } 

     public override nfloat GetComponentWidth (UIPickerView picker, nint component) 
     { 
      if (component == 0) 
       return 240f; 
      else 
       return 40f; 
     } 

     public override nfloat GetRowHeight (UIPickerView picker, nint component) 
     { 
      return 40f; 
     } 
    } 
+0

Hat Ihnen das geholfen? Hast du eine Lösung für dein Problem gefunden? –

+0

Ein Blogbeitrag zum Einrichten eines Pickers wurde hinzugefügt, wenn es hilft. https://www.casseykeating.com/home/2017/6/7/uipickerview-xamarin-ios – cfl