NSMutableArray将最后一个对象移动到第一个位置

时间:2015-06-25 10:33:37

标签: ios objective-c uitableview nsmutablearray

我有一个UITableview,有8行对应我的NSMutableArray,有8个元素。

我想将数组中的索引7移动到索引0,将先前的索引0向下推到索引1.先前的索引6现在将处于索引7位置。

当我使用- insertObject:atIndex:时,我的tableView崩溃说数字或数组项目现在是9而不是8。

我试图创建一个临时数组来保存可变数组的元素,但我想要向下移动的单元格的平滑过渡而不是仅仅重新加载。有没有办法做到这一点?

4 个答案:

答案 0 :(得分:2)

将代码包裹在 [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]; 块中。例如

context.fillText("Hello World!", 10, 100);
context.strokeText("Hello World!", 10, 100);
var textMetrics = context.measureText("Hello World!");
var width = textMetrics.width;

context.font = "20pt Arial";
context.fillText("Width of previous text: " + width + "pixels", 10, 150);

答案 1 :(得分:1)

您正在数组中插入对象,因此会增加数组计数

id object = [self.array objectAtIndex:index];
[self.array removeObjectAtIndex:index];
[self.array insertObject:object atIndex:newIndex];

答案 2 :(得分:1)

id object =[self.array lastObject];
[self.array removeLastObject];
[self.array insertObject:object atIndex:0];

答案 3 :(得分: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];