我有一个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 :)方法,该视图
呈现的控制器已将此属性设置为视图
提出它的控制器。如果未显示视图控制器
模态,但它的祖先之一是,此属性包含视图
提出祖先的控制器。如果当前视图都不
控制器或它的任何祖先以模态表示
此属性为零。