编写委托引用 swift 的不同选项



我试图创建一个函数委托来将数据从MainViewController传递到SecondViewController。我设置了协议:

protocol PassDataDelegate: AnyObject {
    func passData(data: [String])
}

我将委托函数添加到 SecondViewController 中:

func passData(data: [String]) {
   //Pass Data
}

我将委托设置为主视图控制器:

weak var delegate: PassDataDelegate?

在这里,当点击按钮时,将调用委托函数:

@objc func buttonTapped() {
    guard let vcdelegate = delegate else {return}
    vcdelegate.passData(data: data)
}

有两个选项可以编写委托引用:

选项 1

我在 MainViewController 中写下委托给 SecondViewController 的引用:

let secondViewController = SecondViewController()
self.delegate = secondViewController

它的工作原理就像我一样。

选项 2

我在SecondViewController中写道:

let vc = MainViewController()
vc.delegate = self

问题是代表仍然是零,我不明白为什么。有什么提示吗?谢谢

在选项 2 中

let vc = MainViewController()

您创建一个新实例,而不是实际呈现的实例,因此保留真实委托 = nil

最新更新