我试图创建一个函数委托来将数据从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