2

私のアプリには、ユーザーがいつでも表示できる複数の UIViewControllers があります。アプリは、ドキュメント (たとえば、メール アプリの添付ファイル) で開始することもできます。

シナリオは次のとおりです。 - ユーザーはアプリを起動し、アプリケーション内を移動します - ユーザーはアプリをバックグラウンド モードにし、メール アプリに移動します - メール アプリから、ユーザーは添付ファイル付きのメールを選択し、自分のアプリで添付ファイルを開きます -私のアプリはフォアグラウンドに入り、特定のView Controllerに添付ファイルを表示したいと思います。- ユーザーが添付ファイルの処理を終了すると、アプリ内の以前の状態 (添付ファイルを開く前) に戻ることができる必要があります。

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;
            }
        }
    }
}
4

0 に答える 0