Swift-UIButton setsélectionnés
je crée une sous-classe UIButton dans Swift pour effectuer le dessin personnalisé et l'animation sur la sélection
quel serait L'équivalent dans Swift de l'annulation - (void)setSelected:(BOOL)selected
en ObjC?
j'ai essayé
override var selected: Bool
donc je pourrais implémenter un observateur mais j'obtiens
Cannot override with a stored property 'selected'
4 réponses
comme d'autres mentionnés, vous pouvez utiliser willSet
pour détecter les changements. Dans un override, cependant, vous n'avez pas besoin d'attribuer la valeur à super, vous observez simplement le changement existant.
deux choses que vous pouvez observer depuis le terrain de jeu suivant:
- modifier une propriété pour
willSet/didSet
appelle encore pour le superget/set
. Vous pouvez le dire parce que l'état change de.normal
.selected
. - willSet et didSet sont appelés même lorsque la valeur ne change pas, donc vous voudrez probablement faire la comparaison de la valeur de
selected
newValue
willSet
ouoldValue
didSet
déterminer s'il faut animer ou non.
import UIKit
class MyButton : UIButton {
override var isSelected: Bool {
willSet {
print("changing from \(isSelected) to \(newValue)")
}
didSet {
print("changed from \(oldValue) to \(isSelected)")
}
}
}
let button = MyButton()
button.state == .normal
button.isSelected = true // Both events fire on change.
button.state == .selected
button.isSelected = true // Both events still fire.
vous ferais comme par exemple ceci:
class MyButton : UIButton {
// ...
override var isSelected: Bool {
willSet(newValue) {
super.isSelected = newValue;
// do your own business here...
}
}
// ...
}
essayez ceci
override public var selected: Bool {
willSet(selectedValue) {
self.selected = selectedValue
// Do whatever you want
}
}
bouton Créer IBAction et cocher sélectionné ou non en langage swift.
@IBAction func favoriteButtonAction(sender: UIButton) {
// Save Data
sender.selected = !sender.selected;
if (sender.selected)
{
NSLog(" Not Selected");
}
else
{
NSLog(" Selected");
}
}