Von Ihrer Frage nehme ich an, dass Sie nur einen ausgewählten Schüler haben, tat ich eine ähnliche Sache mit einer Sammlung von Symbolen, die der Benutzer auswählen konnte. Zum einen im Hinblick auf Belastung habe ich tat:
override func viewDidLoad() {
super.viewDidLoad()
iconCollectionView.delegate = self
iconCollectionView.dataSource = self
iconCollectionView.allowsMultipleSelection = false
iconCollectionView.selectItemAtIndexPath(NSIndexPath(forItem: 0, inSection: 0), animated: false, scrollPosition: .None)
}
ich die erste Zelle Standard hier, um die Auswahl, würden Sie StudentArray.indexOf
verwenden Ihre ausgewählten Schüler-Index zu erhalten. Dann zeigen die, welches Element ausgewählt ist, ich habe:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = iconCollectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! IconCollectionViewCell
cell.imageView.image = UIImage(named: imageResourceNames.pngImageNames[indexPath.row])
if cell.selected {
cell.backgroundColor = UIColor.grayColor()
}
return cell
}
Dies wird aufgerufen, wenn die Sammlung zum ersten Mal angezeigt wird, dann auf Änderungen bei der Auswahl zu reagieren:
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
collectionView.cellForItemAtIndexPath(indexPath)?.backgroundColor = UIColor.grayColor()
}
func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) {
collectionView.cellForItemAtIndexPath(indexPath)?.backgroundColor = UIColor.clearColor()
}
Offensichtlich gibt es viele Möglichkeiten, um zu zeigen, Zellauswahl ist mein Weg einfach, aber das ist alles was ich tun musste.
EDIT: Da die obige Posting ich erkannt habe es einfacher ist, einen Beobachter zu selected
in der Zelle Klasse nur noch hinzufügen:
class IconCollectionViewCell: UICollectionViewCell {
...
override var selected: Bool {
didSet {
backgroundColor = selected ? UIColor.grayColor() : UIColor.clearColor()
}
}
}
In diesem Ort die gibt es keine Notwendigkeit didSelect
oder didDeselect
oder Scheck zu handhaben für in cellForItemAtIndexPath
ausgewählt, macht die Zelle es automatisch.
Ihre Datenquelle sollten Werte enthalten, die gespeichert werden, ob ein Element ausgewählt ist. Aktualisieren Sie diese und laden Sie dann die Sammlungsansicht neu. – Tim