我正在尝试删除数据源的所有索引,但选择的索引除外。继承人我正在使用的代码。
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
NSMutableIndexSet *indexesToDelete = [NSMutableIndexSet indexSet];
NSUInteger currentIndex = 0;
for (NSIndexPath *cellIndexes in collectionView.indexPathsForVisibleItems)
{
if (cellIndexes.row != indexPath.row)
{
[indexesToDelete addIndex:currentIndex];
}
currentIndex++;
}
[self.searchUsers removeObjectsAtIndexes:indexesToDelete];
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 2)];
[self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationFade];
}];
}
我的集合视图在我的tableView中,所以我在重新加载tableView时重新加载数据。
我使用indexDelete逻辑得到的错误是我的“indexesToDelete
”NSMutableIndexSet
总是为零。当然,我不能向removeObjectsAtIndexes
我似乎无法弄清楚我的逻辑有什么问题。有任何想法吗?
编辑:我似乎没有改变任何东西,但不是我没有崩溃,但它正在删除错误的索引。答案 0 :(得分:0)
表和集合视图的IndexPaths有两个部分用于section和row,它们不是整数。而不是使用整数currentIndex,只需将cellIndexes添加到数组(而不是mutableIndexSet),
NSMutableArray *indexesToDelete = [NSMutableArray new];
for (NSIndexPath *cellIndexes in collectionView.indexPathsForVisibleItems){
if (cellIndexes.row != indexPath.row) {
[indexesToDelete addObject:cellIndexes]; // it would be better to call this variable cellIndex since it's a single index
}
}
答案 1 :(得分:0)
我正在删除枚举的索引。只需要获取未选中单元格的索引。糟糕
NSMutableIndexSet *indexesToDelete = [NSMutableIndexSet indexSet];
for (NSIndexPath *cellIndexes in collectionView.indexPathsForVisibleItems)
{
if (cellIndexes.row != indexPath.row)
{
[indexesToDelete addIndex:cellIndexes.row];
}
}
[self.searchUsers removeObjectsAtIndexes:indexesToDelete];
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 2)];
[self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationFade];