删除除选定的所有索引UICollectionView索引
问题描述:
我试图删除除选定的数据源之外的所有索引。下面是我使用的代码。删除除选定的所有索引UICollectionView索引
-(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
我似乎无法弄清楚我的逻辑有什么问题。有任何想法吗?
编辑:我似乎没有改变任何东西,但不是我没有得到崩溃,但它删除了错误的索引。
答
表和集合视图的IndexPath对于该部分和行有两个部分,它们不是整数。代替使用该整数的,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
}
}
+0
刚刚意识到这一点,但它需要是一个索引集才能执行removeObjectsAtIndexes方法。没有? – Andy 2015-04-02 05:29:29
答
我在枚举的索引中删除。只需要抓取非选定单元格的索引。 oops
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];
您的tableview显示的值是从NSObject或Just Strings中获取的每一行吗? – Vidhyanand 2015-04-02 05:21:58