这就是我想要做的。我正在创建一个应该处理来自 Apple 地图应用程序的请求的路由应用程序。地图应用程序通过向应用程序委托发送以下消息来执行此操作
- (BOOL) application: (UIApplication *) application
openURL:(NSURL *) url
sourcApplication:(NSString *)sourceApplication
annotation:(id)annotation
问题是,我的应用程序此时可能已经在执行并且处于任何状态。导航堆栈中可能有好几层,也可能导航堆栈中只有一个根控制器,但当前覆盖了一个模态视图。
无论它在哪里,我都想弹出所有视图控制器以仅保留一个最顶层的视图控制器,而我知道该怎么做。但如果它存在,我也想关闭任何模式视图,我不知道该怎么做。
我怎么知道模态视图(或者是否有多个可能的模型视图,但事实并非如此,但我是为了这个问题而问的。)是否涵盖了它?我想解雇它?是否可以直接从应用程序委托访问?现在我只是在导航堆栈的最顶层视图控制器中保留模态视图控制器的指针引用,如果引用不为零,则关闭视图控制器。应用程序委托只是要求最顶层的视图控制器来完成这项工作。
这合适吗?