UICollectionViewのセルにカスタム選択スタイルを実装しようとしています。 didSelectメソッドとdidDeSelectメソッドで手動でこれを簡単に行うことができますが、UICollectionViewCellで「選択」変数を操作することでこれを実現したいと思います。
私はこのコードを持っています:
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")
}
}
}
セルを選択すると、セルが強調表示されますが、「選択」が2回印刷され、選択解除は機能しません(両方のUICollectionViewメソッドが実装されている場合でも)。
これについてどうすればいいですか?ありがとう!
そして、Swift 3.0:
override var isSelected: Bool {
didSet {
alpha = isSelected ? 0.5 : 1.0
}
}
コードにステップインすることでそれを理解しました。問題は、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")
}
}
}
今では機能しています。
これを試してください。
override var selected: Bool {
didSet {
self.alpha = self.selected ? 0.5 : 1.0
}
}