确定UIViewController是否在Container View中

Jor*_*orn 3 ios uicontainerview

是否可以检测UIViewController是否在容器视图内(例如以模态显示,是否在UINavigationViewController内部等)?

编辑:澄清此问题的原因:我有一个VC,有时显示为表单,其他时候是另一个VC(在容器视图中)内的子VC。我希望能够检查VC的实际显示方式(“表单”或在“容器视图”中)。

dbo*_*als 5

parentViewController property is set only if you are inside a container view. 
Run Code Online (Sandbox Code Playgroud)

参见-> https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instp/UIViewController/parentViewController

编辑:

作为检查类型,请执行以下操作。

UIViewController * parentController = self.parentViewController;
if (parentController != nil && [parentController isKindOfClass:[UINavigationController class]])
{
    // code
}
Run Code Online (Sandbox Code Playgroud)

  • 这不是那么简单。如果控制器嵌入在任何类型的容器控制器中,则该parentViewController属性将为nil-包括UINavigationController,UITabBarController和UISplitViewController之类的所有苹果罐头控制器。我不确定OP是否要求区分这些视图和自定义容器视图?如果是这样,则必须查看parentViewController是否为非nil,而不是其中的任何Apple类。 (2认同)