我试图在滑动手势上从一个位置移动到另一个位置,即。当我向右滑动任何一个单元格时,刷过的单元格应该到达单元格的底部,为此我编写了代码,它在某些条件下工作正常,即假设我在索引位置0处刷过单元格它正确地进行到在单元格的底部,假设我的数组中有“A,B,C”,因此表格显示“A,B,C”。现在假设我选择“A”< / strong>滑动位于 0 的位置,它位于底部,现在表格将显示 B,C,A ,这是正确的。现在我滑动位置 1 的“C”,以便它应该转到底部。现在我的表显示 C,A,B。但实际上它应该显示 B,A,C。
以下是我的代码
if (state == JTTableViewCellEditingStateRight)
{
NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];
[tableView moveRowAtIndexPath:selectedIndexPath toIndexPath:[NSIndexPath indexPathForRow:[self.rows count]-numberOfMoves inSection:0]];
[self moveRows];
}
- (void)moveRows
{
NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
NSString *selectedString = [self.rows objectAtIndex:selectedIndexPath.row];
[self.rows removeObjectAtIndex:selectedIndexPath.row];
[self.rows insertObject:selectedString atIndex:[self.rows count]];
}
此致 兰吉特
答案 0 :(得分:0)
让我们分析您的代码:
[self.rows insertObject:selectedString atIndex:[self.rows count]];
似乎你把新项目总是放在数组的末尾而不是新位置。
移动对象的正确方法是您的数据源如下:
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
id _object = [self.rows objectAtIndex:fromIndexPath.row];
[self.rows removeObjectAtIndex:fromIndexPath.row];
[self.rows insertObject:_object atIndex:toIndexPath.row];
}
它可能对你有帮助。