因此,首先我已經停留了幾天,花了整整一天的時間閱讀並嘗試了很多堆棧溢出的選項,但對我的成功沒有幫助切換UICollectionView單元格的選擇/取消選擇狀態 - Swift
什麼,我試圖完成聽起來很簡單,並打算在我看來,蘋果的文檔超過它應該工作 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionViewDelegate_protocol/#//apple_ref/occ/intfm/UICollectionViewDelegate/collectionView:shouldHighlightItemAtIndexPath:
基本上我想要實現切換一個UICollectionView的選中狀態自來水單元。
第一次點擊 - 將單元格發送到選定狀態並將背景顏色更改爲白色。
第二抽頭 - 小區發送到取消選擇狀態和變化的背景色清除
的ViewController -
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as? CollectionViewCell {
cell.cellImage.image = UIImage(named: images[indexPath.row])
return cell
} else {
return CollectionViewCell()
}
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
if let cell = collectionView.cellForItemAtIndexPath(indexPath) as? CollectionViewCell {
cell.toggleSelectedState()
}
}
func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) {
if let cell = collectionView.cellForItemAtIndexPath(indexPath) as? CollectionViewCell {
cell.toggleSelectedState()
}
}
細胞 -
func toggleSelectedState() {
if selected {
print("Selected")
backgroundColor = UIColor.whiteColor()
} else {
backgroundColor = UIColor.clearColor()
print("Deselected")
}
}
時遇到的問題是didDeselectItemAtIndexPath不會在點擊已經選擇的單元格時被調用,儘管如果我點擊另一個單元格,它會被調用並選擇新單元格...
我曾嘗試在shouldSelectItemAtIndexPath檢查選擇的狀態& shouldDeselectItemAtIndexPath,我甚至試着寫一個tapGesture來解決這個問題,仍然沒有運氣...
有我丟失的東西? 或者是否有任何已知的解決方法呢? 任何幫助將不勝感激!
當點擊同一個單元格時,它必須再次調用'didSelectItemAtIndexPath'。請檢查 – Shubhank