6

これが私のエラーです:

*** Assertion failure in -[PSUICollectionView _endItemAnimations], /SourceCache/UIKit_Sim/UIKit-2372/UICollectionView.m:2801

私はそれをこのように呼んでいます:

[self.collectionView deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:1 inSection:1]]];

なぜこれが起こっているのですか、何かアイデアはありますか?

4

3 に答える 3

7

モデルからもアイテムを削除しますか? したがって、たとえば、行、セクション、およびそれらが提示するコンテンツの数が、キーがセクションを表し、各配列が行を表す配列の辞書から取得される場合、1 つの行を削除するとdeleteItemsAtIndexPaths、辞書を更新する責任があります。によると。UICollectionViewあなたのためにそれをしません。

于 2012-12-04T17:40:03.763 に答える
5

セクション1からインデックス1を削除しようとしていることに注意してください。インデックスとセクションはどちらも0から始まります。

私はこのようにしました:

NSMutableArray *forms; // datasource item data for all the cells
int indexToDelete; // Set to the index you want to delete

...

[self.collectionView performBatchUpdates:^(void){
    [forms removeObjectAtIndex:indexToDelete]; // First delete the item from you model
    [self.collectionView deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForRow:indexToDelete inSection:0]]];
            } completion:nil];
于 2012-12-05T09:47:35.287 に答える
1

deleteItemsAtIndexPaths: を呼び出すときに、コレクション ビューが他の何かでビジー状態になっていないことを確認します。insertItemsAtIndexPaths: メソッドで同じ問題が発生しましたが、コードのバグが原因であることが判明しました - [myCollectionView insertItemsAtIndexPaths:] を呼び出した直後に [my CollectionView reloadData] を呼び出しました。そのため、insertItemsAtIndexPaths: を呼び出した時点で、私のコレクション ビューはそのデータをリロードしていました。このバグを修正した後、アサーションの失敗の問題はなくなりました。

于 2013-02-08T23:13:28.840 に答える