当我的应用程序再次变为活动状态时,将uiviewcontroller推到现有ViewController的顶部

时间:2012-06-04 19:54:33

标签: ios uiviewcontroller storyboard uiapplicationdelegate

我的应用程序有多个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;
            }
        }
    }
}

0 个答案:

没有答案