Я пытаюсь выполнить две функции в другом виде нажатием двух кнопок. Каждая кнопка должна вызывать одну из функций, которая передается через делегирование. Но похоже, что когда я нажимаю одну из кнопок, они выполняют обе функции протокола одновременно. Только когда я комментирую / удаляю одну функцию, она работает.
Протокол:
protocol ManipulateSectionDelegate {
func addSection()
func removeSection()
}
MainView: вот функции, которые должны вызываться при нажатии кнопок во втором View
extension MainViewController: ManipulateSectionDelegate{
@objc func showSettingsView(){
let settingsController = SettingsViewController()
settingsController.delegateManipuplateSection = self
navigationController?.pushViewController(settingsController, animated: true)
}
func addSection(){
semesterList.append(Semester.init(subject: [], done: false))
subjectTableView.reloadData()
print(semesterList)
}
func removeSection(){
semesterList.removeLast()
subjectTableView.reloadData()
print(semesterList)
}
}
Second View :
class SettingsViewController:UIViewController{
var delegateManipuplateSection: ManipulateSectionDelegate?
override func viewDidLoad() {
super.viewDidLoad()
addSectionButton.addTarget(self, action: #selector(addSectionButtonPressed), for: .touchUpInside)
addSectionButton.addTarget(self, action: #selector(removeSectionButtonPressed), for: .touchUpInside)
}
}
extension SettingsViewController{
@objc func addSectionButtonPressed(){
delegateManipuplateSection?.addSection()
}
@objc func removeSectionButtonPressed(){
delegateManipuplateSection?.removeSection()
}
}
Даже если каждая кнопка связана с отдельной функцией и должна выполнять только одну из них, обе выполняются. Это ситуация, когда мне пришлось бы использовать наблюдателей и уведомления? Я сделал что-то не так?