我有一個集合視圖和一個按鈕在頂部,該按鈕會經歷一個天的列表。對於每一天,收集視圖應該是不同的,我跟蹤字典中的變化。但是,每按一下按鈕,我想重新加載數據,但它選擇隨機單元格。當數據重新加載時,它是否再次運行cellforitematindexpath;如果不是它運行的是什麼?Swift CollectionView ReloadData代理奇怪
這裏是我的CellForItem代碼:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("availability", forIndexPath: indexPath) as! AvailabilityCell
var tempList: [Int]
tempList = self.availability[self.days[index]]! as! [Int]
cell.timeInterval.text = timeIntervals[indexPath.row]
cell.timePeriod.text = timesForIntervals[indexPath.row]
cell.timeInterval.textColor = DARK_BLUE
cell.timePeriod.textColor = DARK_BLUE
cell.backView.layer.cornerRadius = 10
cell.backView.layer.masksToBounds = true
cell.backView.layer.borderColor = DARK_BLUE.CGColor
cell.backView.layer.borderWidth = 1
cell.selected = false
if (tempList[indexPath.row] == 1) {
cell.timeInterval.textColor = UIColor.whiteColor()
cell.backView.backgroundColor = DARK_BLUE
cell.timePeriod.textColor = UIColor.whiteColor()
}
return cell
}
這裏是我的手機有沒有選擇/取消:
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let cell = collectionView.cellForItemAtIndexPath(indexPath) as! AvailabilityCell
cell.timeInterval.textColor = UIColor.whiteColor()
cell.backView.backgroundColor = DARK_BLUE
cell.timePeriod.textColor = UIColor.whiteColor()
var tempList: [Int]
tempList = self.availability[self.days[index]]! as! [Int]
tempList[indexPath.row] = 1
self.availability[self.days[index]] = tempList
}
func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) {
let cell = collectionView.cellForItemAtIndexPath(indexPath) as! AvailabilityCell
cell.timeInterval.textColor = DARK_BLUE
cell.backView.backgroundColor = UIColor.whiteColor()
cell.timePeriod.textColor = DARK_BLUE
var tempList: [Int]
tempList = self.availability[self.days[index]]! as! [Int]
tempList[indexPath.row] = 0
self.availability[self.days[index]] = tempList
}
這裏就是數據被重新裝入:
@IBAction func decreaseDay(sender: AnyObject) {
index--
day.text = days[index]
dispatch_async(dispatch_get_main_queue()) {
self.timeCollection.reloadData()
}
if (index == 0) {
back.enabled = false
}
forward.enabled = true
}
在您的cellForRowatindex方法文本背景顏色和backView背景顏色都是藍色這就是爲什麼出現此問題 – imjaydeep
我不認爲這是因爲每次我將背景更改爲藍色時,文本立即更改爲白色,反之亦然(cellforrowatindex有一個if功能)。但是我可能不會理解你在說什麼,重新加載數據到底是什麼? – Akbapu
更改文本標籤顏色像紅色測試目的和重新加載你的tableView試試這個 – imjaydeep