我试图创建一个函数委托以将数据从MainViewController
传递到SecondViewController
。我设置了协议:
protocol PassDataDelegate: AnyObject {
func passData(data: [String])
}
我将委托函数添加到SecondViewController:
func passData(data: [String]) {
//Pass Data
}
我将委托设置为MainViewController:
weak var delegate: PassDataDelegate?
在点击按钮时,将调用委托函数:
@objc func buttonTapped() {
guard let vcdelegate = delegate else {return}
vcdelegate.passData(data: data)
}
有两种方法可以编写委托引用:
我在MainViewController中编写了对SecondViewController的委托的引用:
let secondViewController = SecondViewController()
self.delegate = secondViewController
它的工作方式就像我方面。
我在SecondViewController中编写:
let vc = MainViewController()
vc.delegate = self
问题在于代表仍然为零,我不明白为什么。有什么提示吗?谢谢
答案 0 :(得分:1)
在选项2中
let vc = MainViewController()
您创建了一个与实际呈现的实例不同的新实例,因此保留了真实的委托= nil