Je suis nouveau dans Ios et j'ai du mal à comprendre les protocoles et le concept des délégués. J'implémente une bibliothèque appelée BEMCheckBox https://github.com/Boris-Em/BEMCheckBox ou https://cocoapods.org/pods/BEMCheckBox pour l'implémentation de boutons radio. Sa documentation est assez descriptive à l'aide de laquelle j'ai ajouté avec succès des cases à cocher, les a regroupées pour fonctionner comme des boîtes radio.
@IBOutlet var inarelashipcb: BEMCheckBox!
@IBOutlet var complicatedcb: BEMCheckBox!
@IBOutlet var singlecb: BEMCheckBox!
var groupbx:BEMCheckBoxGroup!
func initialize(){
groupbx = BEMCheckBoxGroup(checkBoxes: [inarelashipcb,
complicatedcb, singlecb])
groupbx.selectedCheckBox = singlecb
groupbx.mustHaveSelection = true
}
Maintenant, je veux utiliser la méthode didTapCheckBox mais je ne comprends pas comment. La documentation est floue, il n'y a pas d'extraits pour cela. Pour mémoire, c'est ce que la documentation indique.
"BEMCheckBox utilise un délégué pour recevoir les événements de case à cocher. L'objet délégué doit être conforme au protocole BEMCheckBoxDelegate, qui est composé de deux méthodes facultatives:
didTapCheckBox: Envoyé au délégué à chaque fois que la case à cocher est activée, après la mise à jour de ses propriétés (activée), mais avant la fin des animations. "
Des extraits pour m'aider à utiliser delgate afin que je puisse implémenter la méthode didTapCheckBox?
3 Réponses :
extension ViewController : BEMCheckBoxDelegate {
func didTap(_ checkBox: BEMCheckBox) {
//do your work
// if you have multiple checkboxes, then do like that
//if checkBox == checkBox1 {
//do work for checkbox1
//} else if {
// ..
//}
}
}
En implémentant votre code, j'obtiens une erreur de compilation: valeur de type 'BEMCheckBoxGroup?' n'a pas de membre 'délégué'
C'est sur cette instruction "groupbx.delegate = self"
OUI, BEMCheckBoxGroup n'a pas de délégué membre, le délégué est pour une seule case à cocher, vous devez ajouter une méthode de délégué itérant une boucle, j'ai mis à jour, faites le moi savoir.
La case à cocher de sortie que vous avez déclarée, définissez délégué sur self. Par exemple, si votre prise de case à cocher est checkbox1, définissez son délégué comme checkbox1.delegate = soi
I solve it.
using this code
func initialize(){
groupbx = BEMCheckBoxGroup(checkBoxes: [inarelashipcb,
complicatedcb, singlecb])
groupbx.selectedCheckBox = singlecb
groupbx.mustHaveSelection = true
inarelashipcb.delegate = self
complicatedcb.delegate = self
singlecb.delegate = self
}
func didTap(_ checkBox: BEMCheckBox) {
print("here hello")
}
Also my uiviewcontroller inherited from BEMCheckBoxDelegate