我的应用程序有多个UIViewControllers,用户可以随时显示。 也可以使用文档启动应用程序(例如,邮件应用程序的附件)。
方案如下: - 用户启动应用程序并在应用程序内导航 - 用户将应用程序置于后台模式,然后转到Mail App - 从Mail App中,用户选择带有附件的邮件,并打开附件与我的应用程序 - 我的应用程序将进入前台,我想在特定的视图控制器中显示附件。 - 当用户完成附件时,他应该能够返回到应用程序中的先前状态(在附件打开之前)。
我从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;
}
}
}
}