我有一个UITableview,有8行对应我的NSMutableArray,有8个元素。
我想将数组中的索引7移动到索引0,将先前的索引0向下推到索引1.先前的索引6现在将处于索引7位置。
当我使用- insertObject:atIndex:
时,我的tableView崩溃说数字或数组项目现在是9而不是8。
我试图创建一个临时数组来保存可变数组的元素,但我想要向下移动的单元格的平滑过渡而不是仅仅重新加载。有没有办法做到这一点?
答案 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];