Я новичок в Ios, и мне трудно понять концепцию протоколов и делегатов. Я реализую библиотеку BEMCheckBox https://github.com/Борис-Эм/BEMCheckBox или https://cocoapods.org/pods/BEMCheckBox для реализации переключателей. Его документация довольно описательная, с помощью которой я успешно добавил флажки, сгруппировал их вместе, чтобы они работали как переключатели.
@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
}
Теперь я хочу использовать метод didTapCheckBox, но не понимаю, как это сделать. Документация размыта, для этого нет фрагментов. Для записи это то, что говорится в документации
«BEMCheckBox использует делегат для получения событий флажка. Объект делегата должен соответствовать протоколу BEMCheckBoxDelegate, который состоит из двух необязательных методов:
сделалTapCheckBox: Отправляется делегату каждый раз, когда нажимается флажок, после обновления его свойств (включено), но до завершения анимации».
Какие-нибудь фрагменты, которые помогут мне использовать delgate, чтобы я мог реализовать метод didTapCheckBox?





func initialize(){
groupbx = BEMCheckBoxGroup(checkBoxes: [inarelashipcb,
complicatedcb, singlecb])
groupbx.selectedCheckBox = singlecb
groupbx.mustHaveSelection = true
for checkbox in groupbx {
checkbox.delegate = self
}
}
необходимо вызвать initialize в viewDidLoad viewController
override func viewDidLoad() {
// Do your work
initialize()
}
компилятор покажет вам ошибку, ошибка исчезнет, если вы добавите этот код
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 {
// ..
//}
}
}
Не забудьте добавить следующую строку
import BEMCheckBox
Это по этой инструкции "groupbx.delegate = self"
ДА, BEMCheckBoxGroup не имеет делегата-члена, делегат предназначен для одного флажка, вам нужно добавить метод делегата, повторяющий цикл, я обновил, дайте мне знать.
Флажок выхода, который вы объявили, установите делегата на себя. Например, если ваш выход флажка - checkbox1, установите его делегата как checkbox1.delegate = я
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")
}
Также мой uiviewcontroller унаследован от BEMCheckBoxDelegate.
Внедряя ваш код, я получаю ошибку времени компиляции: значение типа «BEMCheckBoxGroup?» не имеет члена «делегата»