快速编写委托人引用的不同选项

时间:2019-07-15 09:27:27

标签: swift xcode optional uiapplicationdelegate

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

有两种方法可以编写委托引用:

选项1

我在MainViewController中编写了对SecondViewController的委托的引用:

let secondViewController = SecondViewController()
self.delegate = secondViewController

它的工作方式就像我方面。

选项2

我在SecondViewController中编写:

let vc = MainViewController()
vc.delegate = self

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

1 个答案:

答案 0 :(得分:1)

在选项2中

let vc = MainViewController()

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