【Swift】UITableViewのセルを移動させる時に、セクションを跨げないようにする方法

記事内に商品プロモーションを含む場合があります

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

移動前と移動先のセクション番号を比較して、セクション番号が異なる場合は元の場所に戻し、セクション番号が一致する場合は、移動先を返すようにしています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA