如何解决协议和委托模型函数被调用,但不运行
您好,当另一个视图控制器中的委托调用一个函数时,我遇到了一些问题。我有两个视图控制器。目标是,当其中一个视图控制器关闭时,它将调用一个函数。
这是第一个视图控制器的代码。调试 consul 中的“A”和“B”打印。
protocol UpdateApproachProtocol {
func addApproachToEntry()
}
class ApproachViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate {
var delegate: UpdateApproachProtocol?
override func viewDidLoad() {
super.viewDidLoad()
title = "Add an Approach"
tableView.delegate = self
tableView.dataSource = self
safeArea = view.layoutMarginsGuide
setupView()
}
override func viewDiddisappear(_ animated: Bool) {
LoadData.shared.approachArray.append(newApproach)
print("A")
delegate?.addApproachToEntry()
print("B")
}
}
这是另一个视图控制器的代码……“测试”永远不会被打印出来。我错过了什么?
class AddEntryViewController: KeyboardViewController,SendTailToEntryProtocol {
override func viewDidLoad() {
super.viewDidLoad()
let approachVC = ApproachViewController()
approachVC.delegate = self
}
extension AddEntryViewController: UpdateApproachProtocol {
func addApproachToEntry() {
print("test")
}
}
}
func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
if indexPath.section == 5 && indexPath.row == 0 {
self.navigationController?.showDetailViewController(ApproachViewController(),sender: nil)
}
}
}
解决方法
在您创建 ApproachViewController
的代码中:
let approachVC = ApproachViewController()
approachVC.delegate = self
self.navigationController?.showDetailViewController(approachVC,sender: nil)
然后,从 viewDidLoad
中删除它,因为它只是创建了 ApproachViewController
并且不对其进行任何操作:
let approachVC = ApproachViewController()
approachVC.delegate = self
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。