0

我有一个使用 UILocalNotifications 的应用程序(尽管这个问题也与 PushNotifications 相关)。当用户收到本地通知时,根据应用程序的状态和他们在通知警报中所做的选择,我想呈现一个特定的 viewController。问题是它们当前可能通过 segue 或模态 ViewController 处于“推送”视图控制器中,并且我目前没有跟踪用户在可能的分支中的位置。

我想知道是否有任何类型的设计模式或标准方式来处理这样的混合演示模式应用程序?特别是如果有任何内置方法可以确定哪个是活动的 ViewController,而无需我设置面包屑系统。这很重要,例如,如果用户已经在查看要作为 localNotification 调用的视图控制器。

我意识到我的需要/解释有点混乱。如果有人需要更多信息,我将对其进行编辑和更新。

4

1 回答 1

0

好的 - 我想我通过 Apple docs View Controller Programming Guide for iOS: Presenting View Controllers from Other View Controllers找到了解决方案

呈现的视图控制器链中的每个视图控制器都有指向链中围绕它的其他对象的指针。换句话说,呈现另一个视图控制器的呈现视图控制器在它的presentingViewController 和presentingViewController 属性中都有有效的对象。您可以根据需要使用这些关系来跟踪视图控制器链。例如,如果用户取消当前操作,您可以通过关闭第一个呈现的视图控制器来移除链中的所有对象。换句话说,关闭视图控制器不仅会关闭该视图控制器,还会关闭它呈现的任何视图控制器。

所以我可以通过关闭链中的第一个模态视图控制器来取消任何模态视图控制器链。

我可以使用以下方法确定当前是否存在模式视图控制器:

 self.window.rootViewController.presentedViewController

如果该属性为 null,则当前不存在模式 viewController。并且为了完整性(hackishness ..)我可以测试presentedViewController有一个presentViewController等:

self.window.rootViewController.presentedViewController.presentedViewController
于 2012-07-16T23:04:18.073 回答