是否可以检测一个UIViewController是否在容器视图中,而不是以模态显示,或者位于UINavigationViewController中等等?
编辑:为了澄清这个问题的原因:我有一个VC,有时显示为Form Sheet,有时作为另一个VC的子VC显示在其内部(在Container View中)。我想能够检查VC实际上是如何显示的(Form Sheet还是在Container View中)。
是否可以检测一个UIViewController是否在容器视图中,而不是以模态显示,或者位于UINavigationViewController中等等?
编辑:为了澄清这个问题的原因:我有一个VC,有时显示为Form Sheet,有时作为另一个VC的子VC显示在其内部(在Container View中)。我想能够检查VC实际上是如何显示的(Form Sheet还是在Container View中)。
parentViewController property is set only if you are inside a container view.
请参见以下链接:
编辑:
要检查类型,请按照以下方式操作。
UIViewController * parentController = self.parentViewController;
if (parentController != nil && [parentController isKindOfClass:[UINavigationController class]])
{
// code
}
parentController != nil
的条件。 - Droppyif let parentVC = self.parent{ //no embeded
if parentVC is UINavigationController //no embedded{
...
} else {//embeded
...
}
} else {//presented
...
}
从导航栏显示当前视图控制器;否则由父视图控制器嵌入(例如,一个带有一个UITableViewController的视图嵌入的ViewController)。
如果self.parent == nil,则它被呈现。希望能帮到您。
- (void) viewAllSubviews:(UIView *) topView Indent:(NSString *) indent {
for (UIView * theView in [topView subviews]){
NSLog(@"%@%@", indent, theView);
if ([theView subviews] != nil)
[self viewAllSubviews:theView Indent: [NSString stringWithFormat:@"%@ ",indent]];
}
}
您可以使用类似以下代码来检查您的容器视图。UIViewController有一个属性navigationController和一个属性tabBarController。查看UIVIewController reference。
if(self.navigationController) {
//you are inside a navigation controller
}
view
被添加为“父级”视图控制器的view
的子视图。你可以通过代码实现...[self.view addSubview:someViewController.view];
这就是所有的操作。 - Fogmeister