Swift/UISwitch: comment mettre en œuvre un délégué/écouteur
Dans mon UITableViewController j'ai une cellule personnalisé qui contient un aiguilleur qui est la suivante:
import Foundation
import UIKit
class SwitchCell: UITableViewCell {
@IBOutlet weak var label : UILabel!
@IBOutlet weak var switchEmail : UISwitch!
func setEditable(canEdit:Bool) {
if (canEdit) {
self.switchEmail.enabled = true
self.label.highlighted = false
}
else {
self.switchEmail.enabled = false
self.label.highlighted = true
}
}
func configureCellWithSwitch(labelText:String, switchValue:Bool, enabled:Bool) {
var labelFrame:CGRect = self.label.frame
labelFrame.size.height = Settings.labelHeight
self.label.frame = labelFrame
self.label.text = labelText
if (switchValue) {
self.switchEmail.setOn(true, animated: true)
}
else {
self.switchEmail.setOn(false, animated: true)
}
self.setEditable(enabled)
}
}
Je voudrais savoir comment mettre en œuvre un auditeur ou le délégué à la base afin d'obtenir la valeur de la UITableViewController. J'ai pu écrire délégué/écouteurs pour une cellule avec UITextField et UITextView mise en œuvre de méthodes
func controller(controller: UITableViewCell, textViewDidEndEditing: String, atIndex: Int)
et
func controller(controller: UITableViewCell, textFieldDidEndEditingWithText: String, atIndex: Int)
mais je ne sais pas ce que je doit mettre en œuvre le commutateur.
OriginalL'auteur SagittariusA | 2015-09-15
Vous devez vous connecter pour publier un commentaire.
UISwitch
n'a pas de délégué du protocole. Vous pouvez écouter de la situation comme suit:ObjC:
Swift:
Swift3 :
Swift4:
voir mon jour: la valeur de
UISwitch
est disponible via.on
Ah ok, cette méthode est censé être à l'intérieur de la TableView droit? Je pensais que c'était à l'intérieur de la classe personnalisée cellule... c'est pourquoi je ne sais pas comment récupérer la valeur de la table view controller
et n'oubliez pas, ne addTarget dans la procédure d'initialisation, mais mettre la touche func switchChanged en dehors de ça
OriginalL'auteur Daniel
Dans Swift4.0
OriginalL'auteur Mujahid Latif
Swift 3:
À L'Aide De Storyboard Mise En Page Automatique:
Ajouter La Référence:
Associer méthode:
Programatic façon:
L'Ajout De La Cible:
La méthode associée à l'interrupteur:
OriginalL'auteur A.G
Un autre (Swift 3 ou 4) méthode consiste à utiliser
didSet
d'observateur et de réduire considérablement le code, comme les soi-Dans la déclaration de classe déclarer une variable comme ci-dessous:
Alors vous pouvez avoir un
IBAction
sur leUISwitch
comme@IBAction
méthode.OriginalL'auteur Annjawn
J'ai la solution en objective-c, c'est la méthode que j'utilise régulièrement:
-L'Action de l'interrupteur doit être en tableviewcontroller et non pas sur la cellule
-Lorsque Vous appuyez sur l'interrupteur à l'intérieur de l'action peut le faire pour trouver la bonne cellule, alors vous pouvez facilement trouver l'indice ou toute autre valeur dont vous avez besoin ...
la méthode findSuperviewWithClass est une catégorie sur UIView
OriginalL'auteur Mattia Lancieri
Swift 3:
OriginalL'auteur David Seek