web-dev-qa-db-ja.com

MonoTouch(Xamarin)の単純なUIPickerView?

XCodeを使用してモノタッチでUIPickerViewを作成し、サンプルデータを入力する方法を誰かが説明できますか?

私はここで例を見ました: https://github.com/xamarin/monotouch-samples/blob/master/MonoCatalog-MonoDevelop/PickerViewController.xib.cs しかし、これはあまり役に立ちませんでしたXCodeでUIPickerViewを作成しているので。これが私がこれまでに持っているものです:

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

UIPickerViewModelインスタンスでUIPickerViewのModelプロパティを設定したいと思います。

pickerStatus.Model = new StatusPickerViewModel();

IListにUIPickerViewModelを提供する要点は次のとおりです。 https://Gist.github.com/jfoshee/5223962

2
Jacob Foshee

ブログ投稿 を作成し、現在の回答よりも詳細に説明しました。

まず、ストーリーボードにUIPickerViewを追加します。 UIPickerに名前を追加します。

次に、UIPickerViewModelを実装するクラスが必要です。これは、それを設定するPickersモデルを設定します。 Android開発に精通している場合、Xamarin iOS用のピッカーのセットアップは奇妙に思えるかもしれません。ピッカーにリストを入力するだけでは不十分です。

最後に、UIPickerViewのモデルを作成したクラスに設定します。

2
cfl