it-swarm.com.ru

Простой UIPickerView в MonoTouch (Xamarin)?

Кто-нибудь может описать, как я могу создать UIPickerView в monotouch, используя XCode и заполнить его примерами данных?

Я посмотрел на пример здесь: https://github.com/xamarin/monotouch-samples/blob/master/MonoCatalog-MonoDevelop/PickerViewController.xib.cs но это не очень полезно, так как я создание моего UIPickerView в XCode. Вот что у меня так далеко:

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

Так что я в основном нашел ответ, и это было ваааааааааааааааа легче, чем вы думаете!

Модель должна быть установлена ​​в ViewDidLoad, иначе произойдет сбой ... Вот почему она не была заполнена правильно. Помните: установите его в «ViewDidLoad».

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

Я считаю, что вы хотите установить свойство Model UIPickerView с вашим экземпляром UIPickerViewModel.

pickerStatus.Model = new StatusPickerViewModel();

Вот Gist, который предоставляет UIPickerViewModel для IList: https://Gist.github.com/jfoshee/5223962

2
Jacob Foshee

Я создал сообщение в блоге , освещая его более подробно, чем текущие ответы. 

Во-первых, добавьте UIPickerView на вашу раскадровку. Добавьте имя в UIPicker.

Затем необходим класс, реализующий UIPickerViewModel, который устанавливает модель Pickers, которая его заполняет. Если вы более знакомы с разработкой для Android, настройка Picker для Xamarin iOS может показаться странной, вы не можете просто заполнить сборщик списком.

Наконец, установите модель UIPickerView для созданного класса. 

2
cfl