一尘不染

如何检查视图控制器是模态显示还是被推入导航堆栈?

swift

在我的视图控制器代码中,我该如何区分:

  • 模态呈现
  • 推入导航堆栈

这两个presentingViewControllerisMovingToParentViewControllerYES在这两种情况下,所以都不是很有益的。

使事情变得复杂的是,我的父视图控制器有时是模态的,将要检查的视图控制器推到该模态上。

事实证明,我的问题是,我嵌入我HtmlViewControllerUINavigationController,然后呈现。这就是为什么我自己的尝试和下面的好答案无法正常工作的原因。

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

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

我想我最好告诉我的视图控制器何时是模态的,而不是试图确定。


阅读 199

收藏
2020-07-07

共1个答案

一尘不染

拿一粒盐,没有测试。

- (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;
 }
2020-07-07