我在网上搜索并发现.. 没什么
那么让我告诉你我的问题!我有这个:
然后我想在网格和列表中制作两种不同的样式来显示项目。
我的问题是当我第一次使用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()方法?如果是的话,在哪里?什么时候?
感谢您的回答