我想在按下取消按钮时忽略我的DetailViewController的视图。
当我只有两个视图控制器,比如Master和Detail时,我可以忽略详细视图,如下所示:
@IBAction func pressedCancel(_ sender: UIBarButtonItem) {
// Dismiss the view
if let owningNavigationController = navigationController {
owningNavigationController.popViewController(animated: true)
}
}
使用在其下具有详细信息和主视图的拆分视图控制器时,这不起作用。例如,当在iPhone上的纵向视图中时,我只是希望在单击取消按钮时关闭详细视图。
我该怎么做呢?
当您在UINavigationController
水平尺寸类的上下文中使用UISplitViewController
将showDetailViewController
添加到.compact
的细节时。它推动了UINavigationController
在主人的UINavigationController
上,所以当你想要消除细节UINavigationController
时,你需要向主人UINavigationController
发消息。像下面这样的东西应该工作。
@IBAction func pressedCancel(_ sender: UIBarButtonItem) {
let navC = navigationController?.navigationController
navC?.popViewController(animated: true)
}
在这里,我们检查导航控制器是否有导航控制器并要求它弹出其最顶层的视图控制器。