5

我的UITableView有 3 个部分。只有第 2 部分中的单元格是可移动的:

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
    BOOL canMove = NO;
    if (indexPath.section == 1) {
        canMove = YES;
    }
    return canMove;
}

但是,B第 2 节(最初包含A``B``C单元格)中的单元格 ( ) 可以移动到第 1 节(最初仅包含T单元格):

  在此处输入图像描述

如何确保单元格其自己的部分内移动?

4

1 回答 1

13

我认为这将解决您的问题

- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath
{
    if( sourceIndexPath.section != proposedDestinationIndexPath.section )
        return sourceIndexPath;
    else
        return proposedDestinationIndexPath;
}

来自 Apple文档

此方法允许在特定行在表视图中上下移动时自定义目标行。当拖动的行悬停在另一行上时,目标行向下滑动以在视觉上为重定位腾出空间;这是由proposedDestinationIndexPath 标识的位置。

于 2012-06-20T11:35:48.463 回答