尝试重写UICollectionViewCell Swift中的“选择”自定义选择状态

问题描述:

我想实现UICollectionView中的单元格的自定义选择样式。尽管可以在didSelect和didDeSelect方法中手动执行此操作,但我希望通过操作UICollectionViewCell中的“selected”变量来实现此目的。尝试重写UICollectionViewCell Swift中的“选择”自定义选择状态

我有这样的代码吧:

override var selected: Bool { 
    get { 
     return super.selected 
    } 
    set { 
     if newValue { 
      self.imageView.alpha = 0.5 
      println("selected") 
     } else if newValue == false { 
      self.imageView.alpha = 1.0 
      println("deselected") 
     } 
    } 
} 

现在,当我选择一个单元格,单元格被强调,但“选择”会打印两次,取消选择不工作(即使两个UICollectionView方法实现)。

我该怎么办?谢谢!

+0

你试过把一个断点,当第一个“选择”被撞了跟踪? – quantumpotato

+0

谢谢。帮助我解决了这个问题。 super.selected没有被修改 – Julius

而对于雨燕3.0:

override var isSelected: Bool { 
    didSet { 
     alpha = isSelected ? 0.5 : 1.0 
    } 
} 
+0

这应该被选为答案,因为它对应于最新版本的iOS,并且只使用'didSet' 。 – tomas789

通过步入代码来找出它。问题在于super.selected没有被修改。所以我改变了这个代码:

override var selected: Bool { 
    get { 
     return super.selected 
    } 
    set { 
     if newValue { 
      super.selected = true 
      self.imageView.alpha = 0.5 
      println("selected") 
     } else if newValue == false { 
      super.selected = false 
      self.imageView.alpha = 1.0 
      println("deselected") 
     } 
    } 
} 

现在它的工作。

+1

很高兴它的工作!你应该能够标记你的答案,因为很快 – quantumpotato

+0

很棒.. !!帮助(Y)和竖起大拇指回答自己的问题 –

+0

也许添加一个更新Swift 3.选择是否是“isSelected” – Starlord

试试这个。

override var selected: Bool { 
    didSet { 
     self.alpha = self.selected ? 0.5 : 1.0 
    } 
}