0

我试图通过滑动手势将一行从一个位置移动到另一个位置,即。当我向右滑动任何单元格时,滑动的单元格应该转到单元格的底部,为此我已经编写了代码,并且它在某些情况下工作正常,即假设我在索引位置 0 处滑动单元格,它会正确到单元格的底部,假设我的数组中有“A,B,C”,所以表格显示“A,B,C”。现在假设我选择“A”在位置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]];   
}

问候兰吉特

4

1 回答 1

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];
}

它可能会帮助你。

于 2012-08-08T13:38:17.653 回答