2017-11-28 6 views
1

Ich studiere vor kurzem Sammlungsansicht. Ich muss einige Zellen in ihrem eigenen Indexpfad fixieren lassen, was bedeutet, dass sie nicht von anderen ausgetauscht und nicht gezogen werden sollten. Ich kann jetzt verwenden * - (BOOL) collectionView: (UICollectionView *) collectionView canMoveItemAtIndexPath: (NSIndexPath ) indexPath zu verhindern, dass sie ziehen. Ich kann nicht verhindern, dass sie von anderen Zellen ausgetauscht werden.UICollectionView, wie man verhindert, dass eine Zelle verschoben wird

Jeder trifft das gleiche Problem?

Dank

+0

Wir werden mehr Kontext benötigen, um Ihnen zu helfen. Können Sie ein Schema oder eine XIB-Datei angeben, die das Layout darstellt, das Sie in Bezug auf die Zellen erreichen möchten? Haben sie (die, die sich nicht bewegen) eine bestimmte Position? – Balanced

Antwort

0

Versuchen collectionView(_ collectionView: UICollectionView, targetIndexPathForMoveFromItemAt originalIndexPath: IndexPath, toProposedIndexPath proposedIndexPath: IndexPath) -> IndexPath

Siehe Apple-Dokumentation mit: https://developer.apple.com/documentation/uikit/uicollectionviewdelegate/1618052-collectionview

Während der interaktiven Bewegungs eines Elements, ruft die Sammlung Ansicht diese Methode, um festzustellen, ob Sie ein zur Verfügung stellen möchten unterschiedlicher Indexpfad als der vorgeschlagene Pfad. Sie können diese Methode verwenden, um zu verhindern, dass der Benutzer das Element an einem ungültigen Speicherort ablegt. Sie könnten beispielsweise verhindern, dass der Benutzer das Element in einem bestimmten Abschnitt löscht.

So zum Beispiel, wenn Sie eine Zelle Neuordnen mit der letzten Zelle verhindern wollten könnten Sie tun:

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