3

MvxTableViewCell を nib ファイルなしで作りたいのですが、stackoverflow や github や google で検索したところ、MvxTableViewCell を手動で作成するための良いサンプルが見つかりませんでした。

私はそのようなコードを試しました、

namespace KittenView.Touch
{
    public partial class KittenCell : MvxTableViewCell
    {
        public static readonly NSString Key = new NSString ("KittenCell");

        private readonly MvxImageViewLoader _imageViewLoader;
        MonoTouch.UIKit.UIImageView MainImage { get; set; }
        MonoTouch.UIKit.UILabel NameLabel { get; set; }
        MonoTouch.UIKit.UILabel PriceLabel { get; set; }

        public KittenCell () : base ()
        {
            this.Frame = new RectangleF(0f,0f,100f,120f);
            MainImage = new UIImageView (new RectangleF(0f,0f,100f,100f));
            NameLabel = new UILabel (new RectangleF (0f, 80f, 100f, 20f));
            PriceLabel = new UILabel (new RectangleF (0f, 100f, 100f, 20f));
            Add (MainImage);
            Add (NameLabel);
            Add (PriceLabel);

            _imageViewLoader = new MvxImageViewLoader(() => this.MainImage);

            this.DelayBind (() => {
                var set = this.CreateBindingSet<KittenCell, Kitten>();
                set.Bind(NameLabel).To (kitten => kitten.Name);
                set.Bind(PriceLabel).To(kitten => kitten.Price);
                set.Bind(_imageViewLoader).To (kitten => kitten.ImageUrl);
                set.Apply ();
            });

            this.Transform = CGAffineTransform.MakeRotation ((float)Math.PI / 2.0f);
        }

        public static KittenCell Create ()
        {
            return new KittenCell ();
        }
    }
}  

しかし、このコードは実行段階で例外が発生し、

SetValue:forUndefinedKey:] この呼び出しは、キー MainImage のキー値コーディングに準拠していません。

AppDelegate.cs の window.MakeKeyAndVisible() で。

nib なしで MvxTableViewCell を使用するにはどうすればよいですか?

よろしく、

こうへい

4

1 に答える 1

2

これを行う最も簡単な方法は、 を使用RegisterClassForCellしてセルをテーブル ビューに登録DequeueReusableCellし、後でセルを作成または再利用することです。

デキュー呼び出し内でこのメソッドを使用して UIKit がこのクラスのインスタンスを作成できるようにするには、追加する必要があると思います。

  • クラスの前の[Register("KittenCell")]属性 - この属性は MonoTouch によって使用され、このマネージド クラスについて ObjectiveC ランタイムに通知します - このマネージド クラスのインスタンスを ObjectiveC から作成できるようにします。

  • コンストラクター(IntPtr handle)に渡すパラメーターを受け取るbase(handle)コンストラクター。このコンストラクターは、マネージ C# オブジェクトを基になるアンマネージ UIKit オブジェクトと共に作成できるようにするために使用されます。

この 2 項目を追加すると、celll が作成されると思います。さらに、よりシンプルな API に切り替えると、パラメーターなしのコンストラクターと静的メソッドRegisterClassForCellを削除できると思います。Create

于 2013-07-23T02:27:44.430 に答える