Swift: 尝试通过委托执行两个函数

Swift: Trying to execute two functions with delegation

我试图通过按两个按钮在另一个视图中执行两个功能。每个按钮都应调用通过委托传递的功能之一。 但似乎当我按下其中一个按钮时,它们会同时执行协议的两个功能。 只有当我 comment/remove 一个函数时它才起作用。

协议:

protocol ManipulateSectionDelegate {
    func addSection()
    func removeSection()
}

主视图: 以下是在第二个视图中按下按钮时应该调用的函数

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)
    }

}

第二个视图:

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()
    }    
}

即使每个按钮都连接到不同的功能并且应该只执行其中一个,但两者都会执行。 在这种情况下我必须使用观察者和通知吗?我是不是做错了什么?

您将两个操作连接到一个同一个按钮

    addSectionButton.addTarget(self, action: #selector(addSectionButtonPressed), for: .touchUpInside)

    addSectionButton.addTarget(self, action: #selector(removeSectionButtonPressed), for: .touchUpInside)