Swift-在显示VC B后,如何将数据从VC A传递到B?
我有两个ViewController,A和B。ViewController A使用套接字并在发生更改时更新其数据 当视图控制器B已经由A以编程方式显示时,如何将这些更新的数据传递给视图控制器BSwift-在显示VC B后,如何将数据从VC A传递到B?,swift,pass-data,Swift,Pass Data,我有两个ViewController,A和B。ViewController A使用套接字并在发生更改时更新其数据 当视图控制器B已经由A以编程方式显示时,如何将这些更新的数据传递给视图控制器B 我正在考虑将ViewController A的更新处理程序类传递给ViewController B,并利用类是引用类型这一事实,因此任何更改都会发生在A的处理程序上,也会发生在B的处理程序上。这是一个有效的体系结构选择吗?在ViewControllerA中演示ViewControllerB时,您只需在Vi
我正在考虑将ViewController A的更新处理程序类传递给ViewController B,并利用类是引用类型这一事实,因此任何更改都会发生在A的处理程序上,也会发生在B的处理程序上。这是一个有效的体系结构选择吗?在ViewControllerA中演示ViewControllerB时,您只需在ViewControllerA中维护对ViewControllerB的引用,下面是如何操作的:
class ViewControllerA: UIViewController {
var viewControllerB: ViewControllerB?
func presentViewControllerB() {
if let viewControllerB = viewControllerB {
present(viewControllerB, animated: true)
} else {
viewControllerB = ViewControllerB()
presentViewControllerB()
}
}
func passDataToViewControllerB() {
viewControllerB?.someData = "Data from ViewControllerA."
}
}
class ViewControllerB: UIViewController {
var someData = ""
}
我想他的意思正好相反。这里没有问题,没有内存泄漏。由于您计划显示视图控制器,因此已经创建了一个引用。在这里,您使用相同的引用来传递数据。而且,它是单向连接,所以这里没有引用循环。如果我用NotificationCenter观察者传递数据呢?这真的是你的选择。有很多方法。