0

タブバー内に分割ビューがあるアプリがあります。これらの分割ビューにはナビゲーション階層があり、その上にモーダルビューが表示されることもありますが、すべて正常に機能しますが...

アプリがバックグラウンドになるたびにパスコードロックを表示しようとしているので、

[self.window.rootViewController presentModalViewController:lockView animated:YES];

私のAppDelegateのメソッドで

- (void)applicationWillResignActive:(UIApplication *)application

...モーダルビューが表示されない限り、これは正常に機能します。モーダルビューが開いている場合、パスコードは表示されません。

このロックビューを表示できるように、現在アクティブなView Controllerを取得する方法はありますか?

前もって感謝します

Cheerio


動作したコードは次のとおりです。

BOOL hasKids = YES;
UIViewController *topViewController = (UIViewController*)[[(UITabBarController*)self.window.rootViewController viewControllers] objectAtIndex:((UITabBarController*)self.window.rootViewController).selectedIndex];

while (hasKids) {
    if (topViewController.presentedViewController) {
        hasKids = YES;
        topViewController = topViewController.presentedViewController;
    } else {
        hasKids = NO;
    }
}

[topViewController presentModalViewController:lockView animated:YES];`
4

1 に答える 1

0

最も簡単な方法は、現在アクティブなタブを追跡することだと思います (これを行う方法はいくつかありますが、 を実装してUITabBarControllerDelegateそのtabBarController:didSelectViewController:メソッドを処理することをお勧めします)。

それが完了したら、おそらく、提示するモーダル ビュー コントローラーを保持する各ビュー コントローラーでプロパティを管理する必要があります。ただし、iOS 5 以降を使用している場合は、UIViewControllerプロパティを調べてくださいpresentedViewController。これは、まさにあなたが望むことを行うための新しい方法のようです。

于 2012-05-04T10:52:28.877 に答える