2017-11-28 13 views
1

最近コレクションビューを研究しました。私は自分のインデックスパスでいくつかの細胞を修正する必要があります。つまり、他の人とやりとりしたりドラッグしたりしてはいけません。私は今、* - (BOOL)collectionView:(UICollectionView *)collectionView canMoveItemAtIndexPath:(NSIndexPath )indexPathを使用して、ドラッグを防ぐことができます。他の細胞とのやりとりを防ぐことはできません。UICollectionView、1つのセルが移動されないようにする方法

誰もが同じ問題を抱えていますか?

おかげ

+0

私たちはあなたを助けるために、より多くのコンテキストが必要になります。セルに関する達成したいレイアウトを示すスキーマまたはXIBファイルを提供できますか?彼ら(移動しない人)は特定の地位を持っていますか? – Balanced

答えて

0

は、Appleのドキュメントを参照してくださいcollectionView(_ collectionView: UICollectionView, targetIndexPathForMoveFromItemAt originalIndexPath: IndexPath, toProposedIndexPath proposedIndexPath: IndexPath) -> IndexPath

を使用してみてください:アイテムのインタラクティブな移動中にhttps://developer.apple.com/documentation/uikit/uicollectionviewdelegate/1618052-collectionview

、コレクションビューは、あなたが提供したいかどうかを確認するために 、このメソッドを呼び出します提案されたパス より異なるインデックスパス。このメソッドを使用して、ユーザーが のアイテムを無効な場所にドロップしないようにすることができます。たとえば、ユーザーが を使用して、特定のセクションにアイテムがドロップされないようにすることができます。

ですから、例えば、あなたはあなたができる最後のセルとセルを並べ替え防ぐしたい場合:

func collectionView(_ collectionView: UICollectionView, targetIndexPathForMoveFromItemAt originalIndexPath: IndexPath, toProposedIndexPath proposedIndexPath: IndexPath) -> IndexPath { 
    if proposedIndexPath.row == data.count { 
     return IndexPath(row: proposedIndexPath.row - 1, section: proposedIndexPath.section) 
    } else { 
     return proposedIndexPath 
    } 
} 
関連する問題