2017-05-30 83 views
1

我正面臨一個非常奇怪的問題,我向用戶展示類別,使用水平CollectionViewXamarin.iOS,我也使用MvvMCross。問題是,當我滾動類別CollectionView和回滾一些單元格是空的。CollectionView中的空單元格

這是MvxCollectionViewCell的子類的代碼,其中我綁定了UI的值。

public partial class DealListCategoryCollectionCellView : MvxCollectionViewCell 
    { 
     public static readonly UINib Nib = UINib.FromName("DealListCategoryCollectionCellView", NSBundle.MainBundle); 
     public static readonly NSString Key = new NSString("CategoryCollectionViewCell"); 
     private FXMvxImageViewLoader _imageLoader; 

     public DealListCategoryCollectionCellView(IntPtr handle) : base(handle) 
     { 
      _imageLoader = new FXMvxImageViewLoader(() => CategoryImageView); 
      this.DelayBind(() => 
      { 

       var set = this.CreateBindingSet<DealListCategoryCollectionCellView, CategoryCellViewModel>(); 
       set.Bind(TitleLabel).To(vm => vm.Name); 
       set.Bind(_imageLoader).To(vm => vm.Slug).WithConversion("LocalImage", "icons"); 
       set.Apply(); 

      }); 
     } 

     public static DealListCategoryCollectionCellView Create() 
     { 
      return (DealListCategoryCollectionCellView)Nib.Instantiate(null, null)[0]; 
     } 
    } 

這就是我如何綁定上述collectionview單元格。

CategoryCollectionView.RegisterNibForCell(DealListCategoryCollectionCellView.Nib, DealListCategoryCollectionCellView.Key); 
var categorySource = new MvxCollectionViewSource(CategoryCollectionView,DealListCategoryCollectionCellView.Key); 

CategoryCollectionView.Source = categorySource; 

而這正是問題的截圖:enter image description here

回答

0

我已經先改變這種固定的問題:

CategoryCollectionView.Source = categorySource; 

到:

CategoryCollectionView.DataSource = categorySource; 

所以,當我從Source更改爲DataSource空單元問題已修復但還有另一個問題是我的單元格沒有被解僱。所以,我實現CollectionViewDelegate這樣的:

class CategoryCollectionDelegate : UICollectionViewDelegate 
    { 
     DealListViewModel viewModel; 
     public CategoryCollectionDelegate(DealListViewModel vm) 
     { 
      viewModel = vm; 
     } 
     public override void ItemSelected(UICollectionView collectionView, NSIndexPath indexPath) 
     { 
      Category currentCategory = viewModel.Categories[indexPath.Row]; 
      Console.WriteLine(currentCategory.Name); 
      viewModel.DoSelectCategoryCommand(currentCategory); 
     } 
    } 

而且比我用它這樣的:

CategoryCollectionView.Delegate = new CategoryCollectionDelegate(DealListViewModel); 

而且它的工作就像魅力:)

相關問題