1. ホーム
  2. ios

[解決済み] ビューコントローラがモーダルに表示されているか、ナビゲーションスタックにプッシュされているかを確認する方法は?

2022-05-10 01:37:21

質問

ビューコントローラのコードで、どのように区別することができますか?

  • モーダル表示
  • ナビゲーションスタックにプッシュ

両方 presentingViewControllerisMovingToParentViewControllerYES は、どちらの場合も、あまり役に立ちません。

複雑なのは、親ビューコントローラが時々モーダルになり、その上でチェック対象のビューコントローラがプッシュされることです。

その結果、私の問題は私の HtmlViewController の中に UINavigationController を提示します。そのため、私自身の試みも、下記の良い回答もうまくいきませんでした。

HtmlViewController*     termsViewController = [[HtmlViewController alloc] initWithDictionary:dictionary];
UINavigationController* modalViewController;

modalViewController = [[UINavigationController alloc] initWithRootViewController:termsViewController];
modalViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:modalViewController
                   animated:YES
                 completion:nil];

モーダルかどうかを判断するのではなく、ビューコントローラーに伝えたほうがよさそうですね。

どのように解決するのですか?

テストはしていません。

- (BOOL)isModal {
     if([self presentingViewController])
         return YES;
     if([[[self navigationController] presentingViewController] presentedViewController] == [self navigationController])
         return YES;
     if([[[self tabBarController] presentingViewController] isKindOfClass:[UITabBarController class]])
         return YES;

    return NO;
 }