我有一个UIViewController(AVC)嵌入在UINavigationController中。 AVC(以模态形式出现)与另一个UIViewController(BVC)连接。在BVC内部,变量self.presentingViewController是可选的NavigationController类型,而不是我期望的AVC类型。

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

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

为什么self.presentingViewController不符合我的预期,即AVC

非常感谢。

最佳答案

要访问它

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

//

From Docs

模态显示视图控制器时(显式或显式
隐式地)使用present(_:animated:completion :)方法,该视图
呈现的控制器已将此属性设置为视图
提出它的控制器。如果未显示视图控制器
模态,但它的祖先之一是,此属性包含视图
提出祖先的控制器。如果当前视图都不
控制器或它的任何祖先以模态表示
此属性为零。

10-08 00:11