5

UITableViewには3つのセクションがあります。2番目のセクションのセルのみが移動可能です。

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

ただし、2番目のセクション(元々はセルを含む)のセル(B)を1番目のセクション(元々はセルA``B``Cのみを含む)に移動できます。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 に答える