從你的問題我假設你只有一個選定的學生,我做了一個類似的事情與用戶可以選擇的圖標集合。 首先考慮做負載我所做的:
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)
}
這裏我默認選擇第一個單元格,你可以使用StudentArray.indexOf
讓你選擇的學生的索引。然後,顯示該項目被選中我做:
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
}
時首先顯示在收集這就是所謂的,然後對變化作出反應的選擇:
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()
}
顯然有很多的方式來表達細胞選擇,我的方式很簡單,但這就是我需要做的。
編輯:由於張貼我已經意識到這點,很簡單,只是一個觀察者在細胞類添加到selected
以上:
class IconCollectionViewCell: UICollectionViewCell {
...
override var selected: Bool {
didSet {
backgroundColor = selected ? UIColor.grayColor() : UIColor.clearColor()
}
}
}
到位與此沒有必要處理didSelect
或didDeselect
或支票對於在cellForItemAtIndexPath
中選擇的單元格,它會自動執行。
你的數據源應包含存儲項目是否被選擇的值。更新這些,然後重新加載集合視圖。 – Tim