当我在 VC B 时,如何使用本应在 VC A 中使用的通知中的数据

How to use the data from a notification that is meant to be used in VC A , when i am in VC B

好吧,我一直在想办法弄清楚如何做到这一点,但我似乎没有找到方法。我也想要正确的方法来做到这一点。

我的服务器每 30 秒向我的设备发送一次通知。假设我在 ViewController B,但是通知收到的数据是 displayed/used 在 ViewController A.

假设我在 ViewController B 时收到了两个通知。然后我导航到 ViewController A。我如何让它显示通知收到的最新数据?

您应该在将存储它们的(全局)第三个对象中收到通知,然后当显示 VC A 时,您可以轻松地从该对象中检索它们... 遵循许多 iOS classes 使用的 "shared instance" 路径(即使有人不喜欢它,因为他们认为单身人士是邪恶的,我认为这是使用它的完美案例)。

你可以这样解决:

  1. 在启动时创建你的单例class,它将接收通知并将它们保持在队列中。
  2. 将单例方法添加到 read/consume 通知队列。
  3. 从任何 class 您需要数据(即您的视图控制器)通过上述方法获取您需要的信息。

这个解决方案将数据管理器(通知处理)和展示(视图控制器)分开,我没有看到任何真正的缺点...

同样,我知道单例名声不好(而且人们经常滥用这种模式)但是你知道 Apple 的 NSNotificationCenter 有一个 +defaultCenter class 方法 return 共享实例(换句话说对于单身人士)所以我很确定这是使用它的情况。

这里 http://www.daveoncode.com/2011/12/19/fundamental-ios-design-patterns-sharedinstance-singleton-objective-c/ 你可以找到一个很好的例子,说明如何实现 +sharedInstance(或 +defaultCenter 或任何你想调用的)方法。

希望对您有所帮助。