从ViewController 1切换到ViewController 2之后有没有办法让VC2知道VC1已经完成加载异步数据(swift)?

时间:2017-12-10 06:22:35

标签: swift

有这篇文章:在视图控制器之间传递数据:

Passing Data between View Controllers

我不会想到我在那之后的事情。

在ViewController 1中,我从firebase加载异步数据,我想转到ViewController 2而不等待VC 1返回所有数据。

在VC2上有一个我想要禁用的按钮,直到VC 1完成。

我确实尝试在数据加载完成后在我的单例中将属性设置为true,然后在VC2循环中将此属性设置为true,但是一旦我从VC1中进行了调整,它就会出现,然后它不会设置属性我的单身人士在后台为真。

THX。

1 个答案:

答案 0 :(得分:1)

当然有很多解决方案,您可以尝试使用NotificationCenter,执行以下操作:

// in VC2: let's start listening for VC1 callback
NotificationCenter.default.addObserver(self, selector: #selector(self.callbackFromVC1(_:)), name: Notification.Name("VC1HasFinished"), object: nil)

// in VC2: this is the callback will be executed
func callbackFromVC1(_ notification: NSNotification? = nil) {
  let userInfoFromVC1:[AnyHashable : Any]? = notification?.userInfo
  // do something with userInfoFromVC1
}

....

// in VC1: when your async stuff is finished, push "userInfoFromVC1" into the notification...
NotificationCenter.default.post(name: NSNotification.Name.init(rawValue: "VC1HasFinished"), object: nil, userInfo:userInfoFromVC1)