NSMutableArray 将最后一个对象移动到第一个位置
NSMutableArray move last object to first position
我有一个 UITableview,它有 8 行对应于我的 NSMutableArray 和 8 个元素。
我想将数组中的索引 7 移动到索引 0,将之前的索引 0 下推到索引 1。之前的索引 6 现在位于索引 7 的位置。
当我使用 - insertObject:atIndex:
时,我的 tableView 崩溃说数字或数组项现在是 9 而不是 8。
我已尝试创建一个临时数组来保存可变数组的元素,但我希望单元格向下移动时平稳过渡,而不是仅仅重新加载。有什么办法吗?
您正在数组中插入对象,因此它会增加您的数组计数
id object = [self.array objectAtIndex:index];
[self.array removeObjectAtIndex:index];
[self.array insertObject:object atIndex:newIndex];
id object =[self.array lastObject];
[self.array removeLastObject];
[self.array insertObject:object atIndex:0];
您必须编辑 dataSource
并更新 TableView
以保持一致:
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:[dataSource count]-1 inSection:0];
[tabelView beginUpdates];
[dataSource insertObject:[dataSource lastObject] atIndex:0];
[dataSource removeLastObject];
[t moveRowAtIndexPath:indexPath toIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]];
[tabelView endUpdates];
将您的代码包装在 beginUpdates-endUpdates
块中。例如
[tableView beginUpdates];
id object = [mutableArray lastObject];
[mutableArray removeLastObject];
[mutableArray insertObject:object atIndex:0];
[tableView moveRowAtIndexPath:[NSIndexPath indexPathWithIndex:mutableArray.count]
toIndexPath:[NSIndexPath indexPathWithIndex:0]];
[tableView endUpdates];
我有一个 UITableview,它有 8 行对应于我的 NSMutableArray 和 8 个元素。
我想将数组中的索引 7 移动到索引 0,将之前的索引 0 下推到索引 1。之前的索引 6 现在位于索引 7 的位置。
当我使用 - insertObject:atIndex:
时,我的 tableView 崩溃说数字或数组项现在是 9 而不是 8。
我已尝试创建一个临时数组来保存可变数组的元素,但我希望单元格向下移动时平稳过渡,而不是仅仅重新加载。有什么办法吗?
您正在数组中插入对象,因此它会增加您的数组计数
id object = [self.array objectAtIndex:index];
[self.array removeObjectAtIndex:index];
[self.array insertObject:object atIndex:newIndex];
id object =[self.array lastObject];
[self.array removeLastObject];
[self.array insertObject:object atIndex:0];
您必须编辑 dataSource
并更新 TableView
以保持一致:
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:[dataSource count]-1 inSection:0];
[tabelView beginUpdates];
[dataSource insertObject:[dataSource lastObject] atIndex:0];
[dataSource removeLastObject];
[t moveRowAtIndexPath:indexPath toIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]];
[tabelView endUpdates];
将您的代码包装在 beginUpdates-endUpdates
块中。例如
[tableView beginUpdates];
id object = [mutableArray lastObject];
[mutableArray removeLastObject];
[mutableArray insertObject:object atIndex:0];
[tableView moveRowAtIndexPath:[NSIndexPath indexPathWithIndex:mutableArray.count]
toIndexPath:[NSIndexPath indexPathWithIndex:0]];
[tableView endUpdates];