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

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

CollectionViewで、セルを移動させることはよくあると思いますが、複数のセクションで構成されている場合、セクションを飛び越えて移動できてしまいますよね。

今回はこれを防ぎ、セクション内のみ移動できるようにする方法を紹介します。

実装方法

セルの移動を制限するには collectionView(_:targetIndexPathForMoveFromItemAt:toProposedIndexPath:) を使います。

公式リファレンス

詳しい説明は公式リファレンスを確認いただくとして、セルの移動でセクションを飛び越えないようにしたい場合は次のように書きます。

extension ViewController: UICollectionViewDelegate {

func collectionView(_ collectionView: UICollectionView, targetIndexPathForMoveFromItemAt originalIndexPath: IndexPath, toProposedIndexPath proposedIndexPath: IndexPath) -> IndexPath {
  //移動元と移動先のセクション番号が異なる場合
  if originalIndexPath.section != proposedIndexPath.section {
    return originalIndexPath
  } else {
      //セクション番号が一致する場合
      return proposedIndexPath
    }
  }
}

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

コメントを残す

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

CAPTCHA