微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

协议和委托模型函数被调用,但不运行

如何解决协议和委托模型函数被调用,但不运行

您好,当另一个视图控制器中的委托调用一个函数时,我遇到了一些问题。我有两个视图控制器。目标是,当其中一个视图控制器关闭时,它将调用一个函数

这是第一个视图控制器的代码。调试 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 举报,一经查实,本站将立刻删除。