iOS(Swift):呈现嵌入在导航控制器中的视图控制器

时间:2018-05-30 22:15:31

标签: ios swift uiviewcontroller uinavigationcontroller segue

我有UIViewControllerAVC)嵌入UINavigationControllerAVC(以模态方式呈现)会转移到另一个UIViewControllerBVC)。在BVC内,变量self.presentingViewController的类型是可选的NavigationController,而不是我期望的AVC

我必须将第一个childViewControllers转发为AVC,如下所示:

let pvc = self.presentingViewController
if let avc = pvc?.childViewControllers.first as? AVC {
    // ...
}

为什么self.presentingViewController不像我预期的那样,即AVC

非常感谢。

1 个答案:

答案 0 :(得分:1)

要访问它

if let pvc = self.presentingViewController as? UINavigationController {
    if let avc = pvc.viewControllers.first as? AVC {
       // ...
    }
}

//

<强> From Docs

  

当您以模态方式呈现视图控制器时(显式或   隐式地)使用当前(_:animated:completion :)方法,视图   显示的控制器将此属性设置为视图   提出它的控制器。如果未显示视图控制器   在模态上,但它的一个祖先是,这个属性包含视图   提出祖先的控制者。如果既不是当前视图   控制器或其任何祖先都以模态方式呈现,价值   在这个属性是零。