管理两个单元格之间的交换,而不是更改其他UITableViewcells的NSIndexpath

时间:2012-04-27 06:58:29

标签: ios ios4 uitableview

我知道当UITableView处于编辑模式时,它是tableviewcells重新排列的默认属性。用户只需重新排序由UITableViewController处理的行。

根据Apple Doc:Reordering of Rows

现在我要做的是,当我将单元格拖到其他单元格上时,后端单元格不应该自动重新排列,只有我拖放拖动单元格的单元格才会重新排列,这是一种交换两个单元格之间

为了更好地理解,请参考下图。我应该能够将琼斯转移到Room1& tableview控制器应该能够自动将Smith2转移到Room3。

enter image description here

以下是我正在使用的委托方法:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {

    NSString *temp = [roomstoringArray objectAtIndex:sourceIndexPath.row];
    [roomstoringArray removeObjectAtIndex:sourceIndexPath.row];

    [roomstoringArray insertObject:temp atIndex:destinationIndexPath.row];

   // [temp release];

}

问题是:

  1. 我怎样才能阻止其他单元格自动重新排列 将细胞拖过其他细胞。
  2. 当一个人习惯时,没有一个委托方法被调用 将单元格拖到其他单元格上,只有名为的方法 当一个人放下单元格时, moveRowAtIndexPath 。所以,甚至无法检查某些条件和没有发现任何此增强功能的范围 在现有的TableView中。
  3. 是否有任何属性与TableView,我可以停止这种行为来执行两个单元格之间的交换只有其余的行保持在同一indexPath.Alos,有人可以帮助我用其他方式,如果有的话。

2 个答案:

答案 0 :(得分:0)

  

使用此链接获取您想要的效果。     https://github.com/mystcolor/JTGestureBasedTableViewDemo

答案 1 :(得分:0)

对于您提到的问题,请检查来自here.的UITableView代理
以下方法对您有所帮助。

  

targetIndexPathForMoveFromRowAtIndexPath
  的 canMoveRowAtIndexPath

对于Swap b / w两行,您可以通过此answer.

了解