我的应用程序有多个 UIViewControllers 可以由用户随时显示。该应用程序也可以从一个文档启动(例如,邮件应用程序的附件)。
场景如下: - 用户启动应用程序并在应用程序内部导航 - 用户将应用程序置于后台模式并转到邮件应用程序 - 从邮件应用程序中,用户选择带有附件的邮件并使用我的应用程序打开附件 -我的应用程序将进入前台,我想在特定的视图控制器中显示附件。- 当用户完成附件后,他应该能够在应用程序中返回之前的状态(附件打开之前)。
我从 UIApplicationDelegate 重载了以下方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
- (void)applicationDidBecomeActive:(UIApplication *)application
使用这些方法,我可以找到是否有要显示的文档以及我的应用程序是否已经启动。
我的问题是推送特定的 ViewController。
下面是我推送 ViewController 的代码的摘录,但什么也没发生,知道吗?如何在我的应用程序中找到活动的 ViewController?
- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSLog(@"applicationDidBecomeActive");
if (_navigationCell != Nil)
{
if ([DataCenter sharedInstance].isAppStarting == FALSE)
{
// push a new navigation stack to display the cell from the navigation
//PushArroundMeId
UIWindow* window = [UIApplication sharedApplication].keyWindow;
UIViewController* rvc = window.rootViewController;
UIStoryboard* sb= [UIStoryboard storyboardWithName:@"MainStoryboardiPhoneApp" bundle:[NSBundle mainBundle]];
AroundMeViewController* avc = [sb instantiateViewControllerWithIdentifier:@"AroundMeViewControllerId"];
if (avc != Nil) {
[rvc presentViewController:avc animated:TRUE completion:NULL];
window.rootViewController = avc;
}
}
}
}