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
}
}
}
移動前と移動先のセクション番号を比較して、セクション番号が異なる場合は元の場所に戻し、セクション番号が一致する場合は、移動先を返すようにしています。
created by Rinker
¥3,536
(2024/11/21 14:04:37時点 Amazon調べ-詳細)
(2024/11/21 14:04:37時点 Amazon調べ-詳細)