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

  • 情态呈现
  • 推送到导航堆栈上

在这两种情况下,presentingViewControllerisMovingToParentViewController都是YES,所以没有多大帮助.

更复杂的是,我的父视图控制器有时是模态的,要判断的视图控制器被推到它上面.

原来我的问题是我把我的HtmlViewController块嵌入UINavigationController块,然后再拿出来.这就是为什么我自己的try 和下面的好答案没有奏效.

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

Ios相关问答推荐

在SwiftUI中使用系统图像和色调创建圆形按钮

更改文本在Flutter 中的位置

UITableViewCell编程约束问题

如何在SwiftUI中为带有CornerRadius的矩形创建下边框?

SwiftUI 中的描边图像边框

如何根据设备时间设置 Flutter 应用时间线?

满足条件时 SwiftUI 动画背景 colored颜色 变化

TextField 重复输入 SwiftUI

分析应用程序版本时出错 - Apple 提交到store

通过MatchedGeometryEffect向上滑动视图

如何将标准化坐标系中的点的位置转换为具有相对位置的常规坐标系?

未找到签名证书​​iOS Distribution

ARKit vs. ARCore vs. Vuforia vs. D'Fusion Mobile vs. Layar SDK

在 Grand Central Dispatch 中使用 dispatch_sync

标题为 UIImage 的导航栏

如何在键盘上方添加工具栏?

Xcode 4.2 如何将一个项目包含到另一个项目中?

如何在 Swift 中将新单元格插入 UITableView

判断从 JSON 字符串返回的 Objective-C 中的空值

如何在 iphone 屏幕中间显示活动指示器?