2013-07-23 205 views
3

我要讓MvxTableViewCell無榫文件,但我在計算器,github上 搜索和谷歌創建MvxTableViewCell,我不能很好的樣本手動進行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:]本CALSS中未鍵值編碼兼容關鍵MainImage。

在AppDelegate.cs的window.MakeKeyAndVisible()。

如何使用MvxTableViewCell沒有筆尖?

問候,

柯喜

回答

2

要做到這一點是使用RegisterClassForCell與表視圖和DequeueReusableCell到後來創建或重用的小區中註冊您的最簡單的方法。

爲了讓UIKit的創建這個類使用離隊裏面調用這個方法,那麼我認爲你需要添加的實例;

  • 在類的前一個[Register("KittenCell")]屬性 - 該屬性被用於通過MonoTouch的講述此管理類的ObjectiveC運行時 - 它允許從的ObjectiveC創建此管理類的實例,

  • 一個構造函數,它將一個參數(IntPtr handle)傳遞給構造函數base(handle)。此構造函數用於允許託管的C#對象與底層的非託管UIKit對象一起創建。

如果你添加這兩項,我相信你的celll會被創建。此外,如果您切換到更簡單的RegisterClassForCell API,那麼我認爲您可以刪除無參數構造函數和靜態方法Create

+0

謝謝@Stuart,我改變細胞類,並添加'TableView.RegisterClassForCellReuse(typeof運算(KittenCell),新的NSString( 「KittenCell」));'到TableViewController它看起來工作。但遺憾的是,我忘記了Cell中的SubView必須不添加View而是添加ContentView,因此我將'Add(MainImage);'更改爲'COntentView,Add(MainImage)'。然後它會引發錯誤,因爲ContentView在構造函數中爲null。我應該在MvxTableViewCell中添加子視圖? – HistoricalMapNation

+0

對不起,我發現這個頁面 http://forums.xamarin.com/discussion/6176/why-is-contentview-null-when-using-mvvmcross-mvxtablecellview 所以我在單獨的方法初始化單元格,工作正常。 謝謝! – HistoricalMapNation