Frage Eine einfache UIPickerView in MonoTouch (Xamarin)?


Kann jemand beschreiben, wie ich ein UIPickerView in Monotouch mit XCode erstellen und mit Beispieldaten füllen kann?

Ich habe mir das Beispiel hier angesehen: https://github.com/xamarin/monotouch-samples/blob/master/MonoCatalog-MonoDevelop/PickerViewController.xib.cs aber das war nicht sehr hilfreich, da ich meine UIPickerView im XCode erstellen. Folgendes habe ich bisher:

public partial class StatusPickerPopoverView : UIViewController
{
    public StatusPickerPopoverView (IntPtr handle) : base (handle)
    {
        pickerStatus = new UIPickerView();
        pickerStatus.Model = new StatusPickerViewModel();
    }

    public StatusPickerPopoverView (): base ()
    {
    }

    public class StatusPickerViewModel : UIPickerViewModel
    {
        public override int GetComponentCount (UIPickerView picker)
        {
            return 1;
        }

        public override int GetRowsInComponent (UIPickerView picker, int component)
        {
            return 5;
        }

        public override string GetTitle (UIPickerView picker, int row, int component)
        {

            return "Component " + row.ToString();
        }
    }
}

15
2018-03-22 18:26


Ursprung


Antworten:


Also habe ich im Grunde die Antwort gefunden und es war waaaaaaaaaaaaaaay einfacher als du denken kannst!

Das Modell muss in ViewDidLoad gesetzt werden, andernfalls wird es abstürzen ... Deshalb wurde es nicht richtig aufgefüllt. Denken Sie daran: Richten Sie es in "ViewDidLoad" ein.

public partial class StatusPickerPopoverView : UIViewController
{
    public StatusPickerPopoverView (IntPtr handle) : base (handle)
    {
    }

    public override ViewDidLoad()
    {
        base.ViewDidLoad();

        pickerStatus = new UIPickerView();
        pickerStatus.Model = new StatusPickerViewModel();
    }

    public class StatusPickerViewModel : UIPickerViewModel
    {
        public override int GetComponentCount (UIPickerView picker)
        {
            return 1;
        }

        public override int GetRowsInComponent (UIPickerView picker, int component)
        {
            return 5;
        }

        public override string GetTitle (UIPickerView picker, int row, int component)
        {

            return "Component " + row.ToString();
        }
    }
}

21
2018-03-25 15:21



Xamarin Studio 5.10:

public partial class ViewController : UIViewController
    {
        UIPickerView samplePicker;

        public ViewController (IntPtr handle) : base (handle)
        {
        }    
        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();

            samplePicker = new UIPickerView (new CoreGraphics.CGRect (10f, 244f, this.View.Frame.Width - 20, 250f));
            samplePicker.BackgroundColor = UIColor.LightGray;    
            samplePicker.Model = new StatusPickerViewModel ();   

        }    
        public class StatusPickerViewModel : UIPickerViewModel
        {
            public override nint GetRowsInComponent (UIPickerView pickerView, nint component)
            {
                return 5;
            }

            public override string GetTitle (UIPickerView pickerView, nint row, nint component)
            {               
                return "Title";
            }

            public override nint GetComponentCount (UIPickerView pickerView)
            {

                return 1;
            }           
        }    
        public override void ViewDidAppear (bool animated)
        {
            base.ViewDidAppear (animated);

            this.View.AddSubview (samplePicker);
        }    
        }

3
2018-03-17 06:55



Ich glaube, dass Sie die Model-Eigenschaft von UIPickerView mit Ihrer UIPickerViewModel-Instanz festlegen möchten.

pickerStatus.Model = new StatusPickerViewModel();

Hier ist ein Gist, der ein UIPickerViewModel für eine IList bereitstellt: https://gist.github.com/jfoshee/5223962


2
2018-03-22 19:16



Ich habe ein Blogeintrag, um es ausführlicher als die aktuellen Antworten zu decken.

Fügen Sie zunächst ein UIPickerView zu Ihrem Storyboard hinzu. Fügen Sie dem UIPicker einen Namen hinzu.

Als Nächstes wird eine Klasse benötigt, die UIPickerViewModel implementiert, die das Pickers-Modell festlegt, das es auffüllt. Wenn Sie mit der Android-Entwicklung vertrauter sind, kann die Einrichtung eines Pickers für Xamarin iOS seltsam erscheinen. Sie können den Picker nicht einfach mit einer Liste füllen.

Zuletzt legen Sie das Modell der UIPickerView auf die erstellte Klasse fest.


2
2018-06-08 18:43