【问题标题】:iOS: UIApplicationDidReceiveRemoteNotificationiOS:UIApplication DidReceiveRemoteNotification
【发布时间】:2012-06-29 19:54:01
【问题描述】:

在应用程序委托之外还有类似的东西吗?当我收到通知时,我希望能够在我的视图控制器中做某些事情。我是否只需要导入它们中的每一个并对照我当前的视图控制器检查类的类型以便对它们执行操作?

基本上,如果我收到一个远程通知并且我没有对堆栈上最顶层视图控制器的确切引用,是否有访问该控制器的类或实例方法的好方法?或者甚至是一些属性?

【问题讨论】:

  • 它只在应用程序委托中。为什么不为您可能需要访问的视图控制器创建一个属性,并在您需要对它们执行某些操作时引用它们。
  • 属性在哪里?每个都指一个viewController?如果保留它们,那将变得太重了。答案很轻,但我认为这种方法是一种后备方式。
  • 如果这些视图控制器存在于应用程序生命周期中,它根本不会很重。您将拥有的只是一些指向已经存在的东西的额外指针。如果您不想保留它们,可以将它们设为弱属性。

标签: ios class uiviewcontroller delegates instance


【解决方案1】:

你为什么不直接向他们发送一个 NSNotification(不要误会通知中心Apple Push Notifications)?你有一篇很好的文章here 谈论它。

【讨论】:

  • 哇。我绝对忽略了通知中心。我对 iOS 还是很陌生,但我认为它是为内置通知严格设置的,你不能推送自己的。我认为这将对我迄今为止所做的许多事情产生巨大影响。太棒了。谢谢!
  • 另外,在最顶层的 viewController 上保留某个通知的好习惯是什么?使用 viewWillAppear: 添加观察者并在 viewWillDisappear: 上删除它?
  • viewDidLoad,理想情况下(如果视图控制器应在其视图离开屏幕后继续侦听)。 Appear/Disappear 函数将被多次调用(任何时候您导航到/离开视图)。
  • 关于-viewDidLoad 的一个警告是您将来可能无法使用-viewDidUnload。执行此操作的正确位置取决于您在做什么。你的视图控制器想要做什么来响应这个事件?
  • 好吧,我说过我不想让他们在屏幕外听,那不就是说 viewWillAppear 和 viewWillDisappear 是最好的选择吗?
猜你喜欢
  • 1970-01-01
  • 2017-03-28
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
  • 2023-03-25
相关资源
最近更新 更多