尝试在UICollectionView上调用DeleteItems时遇到此异常。我到处搜索,大多数人说他们通过在调用DeleteItems之后不在CollectionView上调用ReloadData来解决此问题,但我知道我没有这样称呼。我什至覆盖了它,并在ReloadData上设置了一个断点,并确认它没有被调用。
this.InvokeOnMainThread(() =>
{
CollectionView.DeleteItems (new NSIndexPath [] { indexPath });
});
抛出Objective-C异常。名称:NSInternalInconsistencyException原因:无效的更新:部分0中的项目数无效。更新(5)之后,现有部分中包含的项目数必须等于更新(5)前该部分中包含的项目数,加或减从该部分插入或删除的项目数(已插入0,已删除1),加或减已移入或移出该部分的项目数(已移入0,已移出0)。
最佳答案
看起来我需要在调用DeleteItems之前更新绑定到数据源的列表:
this.InvokeOnMainThread(() =>
{
this.MyList.RemoveAt(indexPath.Row);
CollectionView.DeleteItems (new NSIndexPath [] { indexPath });
});