将委托分配给类的实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将委托分配给类的实例相关的知识,希望对你有一定的参考价值。

嗨,大家好,希望你做得好。我有一个疑问,当我尝试使用自定义委托功能时,如果不使用prepare segue或现有视图控制器就不会调用回调函数可以在没有这两个概念的情况下直接调用它来直接处理前后控制器。我只说我有3个viewControllers,当我在第3个视图控制器中执行某些操作时,我想更新我的firstviewcontroller标签。是否可以通过代表?请帮助我,我在最近两天挣扎,我找不到答案,所以请指导我。

这是我的代码在我的第三个视图控制器中

protocol ThirdViewControllerDelegate: class {    
    func updateLabel(title: String)
}

然后我创建了一个属性weak var delegate: ThirdViewControllerDelegate?

我已经分配了一个值

@IBAction func thirdControllerButtonTapped(_ sender: UIButton) {        
    delegate?.updateLabel(title: "ios_Developer")

    dismiss(animated: true, completion: nil)
}

我在我的第一个视图控制器中采用了这个代理

lazy var thirdController = ThirdViewController()
thirdController.delegate = self

func updateLabel(title: String) {
    print("Your updated Label is (title)")
}

但这个功能没有被调用。在这里我如何设置委托参考,所以请帮助我。

答案
override func prepare(for segue: UIStoryboardSegue, 
      sender: Any?) {
    if let vc = segue.destination as? ThirdViewController {
        vc.delegate = self
    }
}

要么:

let vc = ThirdViewController()
vc.delegate = self
self.navigationController?.pushViewController(vc, animated: true)

https://developer.apple.com/documentation/uikit/uinavigationcontroller/1621887-pushviewcontroller

这是一个图表,希望显示视图控制器如何通过委托彼此通信:

enter image description here

以上是关于将委托分配给类的实例的主要内容,如果未能解决你的问题,请参考以下文章

Swift/Combine - 将过滤后的对象分配给类的属性

将标准输入中的字符串分配给类成员变量

如何将另一个文件中的变量分配给类常量?

将 QXmlStreamReader 实例传递给类

为啥使用set注入,一定要给类提供一个无参的构造函数,否则Spring不能实例化类的.

将字典分配给类对象