调用了协议和委托模型函数,但没有调用 运行
Protocol and Delegate model function is called, but does not run
你好,当另一个视图控制器中的委托调用时,我在获取 运行 的函数时遇到了一些问题。我有两个视图控制器。目标是,当其中一个视图控制器关闭时,它将调用一个函数。
这是第一个视图控制器的代码。在调试领事中打印“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
你好,当另一个视图控制器中的委托调用时,我在获取 运行 的函数时遇到了一些问题。我有两个视图控制器。目标是,当其中一个视图控制器关闭时,它将调用一个函数。
这是第一个视图控制器的代码。在调试领事中打印“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