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)
我试图通过按两个按钮在另一个视图中执行两个功能。每个按钮都应调用通过委托传递的功能之一。 但似乎当我按下其中一个按钮时,它们会同时执行协议的两个功能。 只有当我 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)