我对包含UICollectionView的VC有一个非常奇怪的问题。我正在尝试使用之前已由用户选择的单元格,1)减少其alpha,以及2)取消隐藏单元格左上角的图标。我的收藏加载两次。一旦使用先前存储在设备中的数据源,然后从API加载新数据。
我发现最初视图正确加载,但奇怪的是,每个单元格中的alpha颜色都是正确的,但有些单元格在第二次加载时取消隐藏图标!
我不知道是什么原因引起的。有什么帮助吗?
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath)
if defaults.boolForKey("gotPL") {
let catNumber = cell.viewWithTag(1) as! UILabel
let catTitle = cell.viewWithTag(2) as! UILabel
catNumber.text = String(indexPath.item + 1)
catTitle.text = defaults.arrayForKey("playlistTitles")![indexPath.item] as? String
cell.layer.cornerRadius = 30
//CUSTOM LOAD FUNCTIONALITY STARTS HERE
if defaults.arrayForKey("selectedArray") != nil {
let selectedArray: [String] = defaults.arrayForKey("selectedArray") as! [String]
if selectedArray.contains(defaults.arrayForKey("playlistTitles")![indexPath.item] as! String) {
print(indexPath.item)
cell.alpha = 0.5 //WORKS CORRECTLY
cell.viewWithTag(3)?.hidden = false //IS REPLICATED INCORRECTLY ON SECOND LOAD
}
}
return cell
}
return cell
}
答案 0 :(得分:2)
对于每个单元格而言,您需要cell.alpha
和cell.alpha
的刷新值,而不是if
条件单元格条件。原因是细胞重用。
cell.alpha = 1
cell.viewWithTag(3)?.hidden = true
if defaults.arrayForKey("selectedArray") != nil {
let selectedArray: [String] = defaults.arrayForKey("selectedArray") as! [String]
if selectedArray.contains(defaults.arrayForKey("playlistTitles")![indexPath.item] as! String) {
print(indexPath.item)
cell.alpha = 0.5 //WORKS CORRECTLY
cell.viewWithTag(3)?.hidden = false //IS REPLICATED INCORRECTLY ON SECOND LOAD
}
}
祝你好运!