CollectionView mehrere Zellen markiert
Habe ich eine Sammlung der Ansicht mit zwei benutzerdefinierte Zellen ist für die Startaufstellung und eines für die Liste, ich möchte in der Lage sein zu berühren Zellen, und wählen Sie Sie als als wenn Sie wollen, zu löschen, oder teilen Sie Sie , alles was ich will für Sie nun in der Lage sein zu wählen und deselct Ihnen krank poste meinen code unter dem Ergebnis ist, wenn ich Tippen Sie auf eine Zelle werden alle Zellen markiert sind! hier ist der code:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if isGridSelected {
let cell:cell2_Class = collectionView.dequeueReusableCellWithReuseIdentifier("cell2", forIndexPath: indexPath) as! cell2_Class
cell.listImage.image = imageArray[indexPath.row]
if flag == true {
cell.layer.borderColor = UIColor.blueColor().CGColor
cell.layer.borderWidth = 3
cancelButton.hidden = false
} else {
cell.layer.borderColor = UIColor.clearColor().CGColor
cancelButton.hidden = true
}
return cell
} else {
let cell:PhotoCollectionCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! PhotoCollectionCell
if flag == true {
cell.layer.borderColor = UIColor.blueColor().CGColor
cell.layer.borderWidth = 3
cancelButton.hidden = false
} else {
cell.layer.borderColor = UIColor.clearColor().CGColor
cancelButton.hidden = true
}
cell.imageView.image = imageArray[indexPath.row]
cell.NameLabel.text = namelabel[indexPath.row]
cell.ModifiedLbl.text = modfLabel[indexPath.row]
return cell
}
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let cell = collectionView.cellForItemAtIndexPath(indexPath)
if cell!.selected == true {
flag = true
} else {
flag = false
}
self.collectionView.reloadData()
}
- warum ändern Sie nicht die DS, und laden Sie dann die collectionView?
- danke, aber ich nicht so Recht, was du meinst
- Es bedeutet, es gibt doch sicherlich einige array oder eine Art von Datenstruktur. Warum also nicht die Werte ändern, und laden Sie einfach die collectionview?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In
PhotoCollectionCell
undcell2_Class
(oder in einem gemeinsamensuperclass
) einfach diese Methode überschreiben,Dann brauchen Sie nicht zu tun haben mit der tatsächlichen
selection/highlighting
in Ihremdelegate
oderdataSource
.Stellen Sie sicher, dass Ihre
collectionView
hat die EigenschaftallowsSelection
zuYES
.Wenn Sie wollen
multiple selection
dann auch eingestelltallowsMultipleSelection
zuYES
und implementieren Sie die folgende Methode in Ihrerdelegate
Swift-Lösung
Unterklasse von
collectionViewCell
in
UICollectionViewDelegate
:Basierend auf Aerows Lösung
Swift 4.2
Unterklasse von
collectionViewCell
in
UICollectionViewDelegate
Ist und sehr wichtig, auf Ihre
viewDidLoad()
vergessen Sie nicht, dass Ihre collectionView MehrfachauswahlApple-Dokumentation - allowsMultipleSelection