UICollectionView:删除单元格问题
UICollectionView: removing cell issue
但是,我正在尝试从我的 collectionView 中删除一个单元格。当我从我的数据源中删除对象并尝试批量更新时,它说该单元格不再存在。:
'NSInternalInconsistencyException', reason: 'attempt to delete item 0 from section 0 which only contains 0 items before the update'
在这段代码之前,我从我的核心数据中删除了内容,[[usermanager getSelectedUser]loadCards];
行实际上重新加载了包含单元格内容的数据源,方法是从核心数据中获取它们。
- (void)cardRemoved:(NSNotification *)note {
NSDictionary *args = [note userInfo];
Card *card = [args objectForKey:@"card"];
[[usermanager getSelectedUser]loadCards];
[self.collectionView performBatchUpdates:^{
NSIndexPath *indexPath =[NSIndexPath indexPathForRow:card.position.intValue inSection:0];
[self.collectionView deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
} completion:^(BOOL finished){
[self.collectionView setDelegate:self];
[self.collectionView setDataSource:self];
[self.collectionView reloadData];
}];
}
如果我在调用 loadCards
行之前打印出单元格的数量,我会得到正确的行数(正如预期的那样)。
编辑
这就是 loadCards 调用的内容:
-(NSMutableArray *)getCards{
UserModel *selectedUser = [self getSelectedUserFromDB];
NSMutableArray *cards = [[NSMutableArray alloc] init];
for(CardModel *cardModel in selectedUser.cards){
[cards addObject:[self modelToCard:cardModel]];
}
return cards;
}
我注意到,即使我不调用 loadCards
方法,它也会说视图中没有项目。
谁能帮帮我?谢谢
从 UICollectionView
中删除单元格, 然后 从模型中删除它们。同样的事情也适用于 UITableView
。您也不需要在删除项目后重新加载集合视图。
如果您愿意,您可以只从模型中删除项目,然后重新加载集合视图,不在模型中的项目将从集合视图中消失,但没有从中删除项目所产生的相同动画集合视图。
但是,我正在尝试从我的 collectionView 中删除一个单元格。当我从我的数据源中删除对象并尝试批量更新时,它说该单元格不再存在。:
'NSInternalInconsistencyException', reason: 'attempt to delete item 0 from section 0 which only contains 0 items before the update'
在这段代码之前,我从我的核心数据中删除了内容,[[usermanager getSelectedUser]loadCards];
行实际上重新加载了包含单元格内容的数据源,方法是从核心数据中获取它们。
- (void)cardRemoved:(NSNotification *)note {
NSDictionary *args = [note userInfo];
Card *card = [args objectForKey:@"card"];
[[usermanager getSelectedUser]loadCards];
[self.collectionView performBatchUpdates:^{
NSIndexPath *indexPath =[NSIndexPath indexPathForRow:card.position.intValue inSection:0];
[self.collectionView deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
} completion:^(BOOL finished){
[self.collectionView setDelegate:self];
[self.collectionView setDataSource:self];
[self.collectionView reloadData];
}];
}
如果我在调用 loadCards
行之前打印出单元格的数量,我会得到正确的行数(正如预期的那样)。
编辑 这就是 loadCards 调用的内容:
-(NSMutableArray *)getCards{
UserModel *selectedUser = [self getSelectedUserFromDB];
NSMutableArray *cards = [[NSMutableArray alloc] init];
for(CardModel *cardModel in selectedUser.cards){
[cards addObject:[self modelToCard:cardModel]];
}
return cards;
}
我注意到,即使我不调用 loadCards
方法,它也会说视图中没有项目。
谁能帮帮我?谢谢
从 UICollectionView
中删除单元格, 然后 从模型中删除它们。同样的事情也适用于 UITableView
。您也不需要在删除项目后重新加载集合视图。
如果您愿意,您可以只从模型中删除项目,然后重新加载集合视图,不在模型中的项目将从集合视图中消失,但没有从中删除项目所产生的相同动画集合视图。