Xamarin iOS collectionView reloadData无法正常工作

时间:2017-06-24 18:36:09

标签: ios xamarin cells reloaddata collectionview

我在网上搜索并发现.. 没什么

那么让我告诉你我的问题!我有这个:

  • 1个集合查看
  • 1 datasource
  • 2布局
  • 2个原型细胞

然后我想在网格和列表中制作两种不同的样式来显示项目。

我的问题是当我第一次使用ReloadData()时,它没问题,但其他时候,细胞正在改变。我不知道为什么,我不知道如何避免这种变化..

请参阅我的代码:

在构造函数

collectionViewTransactions.CollectionViewLayout = new CollectionViewLayoutGrid();
collectionViewTransactions.DataSource = new TransactionCollectionViewSource();

在方法按钮中切换

private void TransactionsChangeToGrid(object sender, EventArgs ea)
    {
        allCategoryTmplViewController.IsGrid = true;

        collectionViewTransactions.CollectionViewLayout = new CollectionViewLayoutGrid();
        collectionViewTransactions.ReloadData();
    }

在我的数据源中的GetCell方法

public override UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath)
    {
        Transaction transaction = Transactions[indexPath.Row];


        if(allCategoryTmplViewController.IsGrid)
        {
            var cell = (TransactionCellGrid)collectionView.DequeueReusableCell("transactionGrid", indexPath);
            cell.UpdateRow(transaction);
            return cell;
        }
        else if (!allCategoryTmplViewController.IsGrid)
        {
            var cell = (TransactionCellList)collectionView.DequeueReusableCell("transactionList", indexPath);
            cell.UpdateRow(transaction);
            return cell;
        }
        return new UICollectionViewCell();
    }

它第一次工作,但在它没有之后!

我是否必须使用invalidateLayout()方法?如果是的话,在哪里?什么时候?

感谢您的回答

0 个答案:

没有答案