调用了协议和委托模型函数,但没有调用 运行

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