MvxCollectionViewSource DequeueReusableCell

时间:2013-09-20 15:06:46

标签: mvvmcross

我们已经设置了我们的collectionviewSource和集合视图,但在滚动时遇到了性能问题。我们目前管理这样的单元格:

    public override UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath)
    {
        var to = base.GetCell(collectionView, indexPath) as AnimalCell;
        to.SetParentLocation(_parent);
        return to;
    }

我的问题是这管理基类中的队列吗?

如果不是,使用标准出队的最佳方式是什么

    public override UICollectionViewCell GetCell (UICollectionView collectionView, MonoTouch.Foundation.NSIndexPath indexPath)
    {
        var animalCell = (AnimalCell)collectionView.DequeueReusableCell (animalCellId, indexPath);

        var animal = animals [indexPath.Row];
        animalCell.Image = animal.Image;
        return animalCell;
    }

当我尝试使用单元格时,更改为上面的代码会导致崩溃。我是否需要更改我的Cell类或如何设置集合视图?

1 个答案:

答案 0 :(得分:1)

  

我的问题是这管理基类中的队列吗?

是的,默认的MvxCollectionViewSource使用此方法:

    protected virtual UICollectionViewCell GetOrCreateCellFor(UICollectionView collectionView, NSIndexPath indexPath,
                                                              object item)
    {
        return (UICollectionViewCell) collectionView.DequeueReusableCell(DefaultCellIdentifier, indexPath);
    }

来自https://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.Binding.Touch/Views/MvxBaseCollectionViewSource.cs#L55

所以无论是什么导致性能问题,它可能不是细胞重用(对不起,这可能没有多大帮助 - 但至少它排除了一个!)