Swift-在显示VC B后,如何将数据从VC A传递到B?

Swift-在显示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和B。ViewController A使用套接字并在发生更改时更新其数据

当视图控制器B已经由A以编程方式显示时,如何将这些更新的数据传递给视图控制器B


我正在考虑将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观察者传递数据呢?这真的是你的选择。有很多方法。