it-swarm.com.de

Eine einfache UIPickerView in MonoTouch (Xamarin)?

Kann jemand beschreiben, wie ich mit XCode eine UIPickerView in Monotouch 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 es bin mein 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
P. Sami

Also fand ich im Grunde die Antwort und es war waaaaaaaaaaaaaaaaay einfacher als du denken kannst!

Das Modell muss in ViewDidLoad festgelegt werden, da es sonst zum Absturz kommt. Deshalb wurde es nicht korrekt gefü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
P. Sami

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
A.G

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

pickerStatus.Model = new StatusPickerViewModel();

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

2
Jacob Foshee

Ich habe einen Blog-Beitrag erstellt , der detaillierter als die aktuellen Antworten behandelt wird. 

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

Als Nächstes ist eine Klasse erforderlich, die UIPickerViewModel implementiert, um das Pickers-Modell festzulegen, das es auffüllt. Wenn Sie mit der Android-Entwicklung besser vertraut sind, kann das Einrichten eines Pickers für Xamarin iOS komisch erscheinen. Sie können den Picker nicht einfach mit einer Liste füllen.

Setzen Sie das Modell der UIPickerView zuletzt auf die erstellte Klasse. 

2
cfl