TableViewを編集モードにして、セルを移動させることはよくあると思いますが、複数のセクションで構成されている場合、セクションを飛び越えて移動できてしまいますよね。
移動前
移動後
今回はこれを防ぎ、セクション内のみ移動できる方法を紹介します。
実装方法
該当する処理だけ、コードを抜き出すと次のようになります。
extension ViewController: UITableViewDelegate {
// セルの移動をセクション内のみの移動に制限する
func tableView(_ tableView: UITableView, targetIndexPathForMoveFromRowAt sourceIndexPath: IndexPath, toProposedIndexPath proposedDestinationIndexPath: IndexPath) -> IndexPath {
//移動先と移動元のセクション番号を比較
if (proposedDestinationIndexPath.section != sourceIndexPath.section) {
return sourceIndexPath
}else {
return proposedDestinationIndexPath
}
}
移動前と移動先のセクション番号を比較して、セクション番号が異なる場合は元の場所に戻し、セクション番号が一致する場合は、移動先を返すようにしています。
created by Rinker
¥3,536
(2024/11/23 14:06:16時点 Amazon調べ-詳細)
(2024/11/23 14:06:16時点 Amazon調べ-詳細)