[英]How to dismiss and pop up a view controller in single click
我有 3 个视图控制器在第一个视图 controller(即 MydownloadViewController)中,我使用它来推送到另一个视图 controller。
let vc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "ImagePreviewViewController") as? ImagePreviewViewController
self.navigationController?.pushViewController(vc!, animated: true)
从图像预览 controller
let vc = self.storyboard?.instantiateViewController(withIdentifier: "DeletePopupViewController") as! DeletePopupViewController
self.present(vc, animated: false, completion: nil)
从删除视图 controller 我想回到我的下载视图 controller 为此我正在这样做 - :
self.dismiss(animated: true, completion: {
if let destinationVC = presentingVC.navigationController?.viewControllers.filter({$0 is MyDownloadsViewController}).first {
presentingVC.navigationController?.popToViewController(destinationVC, animated: false)
}
})
但是什么也没有发生,这段代码出了什么问题。
当您的弹出窗口关闭时,呈现的 controller 实例将为零。 您可能需要事先持有参考资料。 您可能需要执行类似下面的操作。
let presentingController = self.presentingViewController
self.dismiss(animated: true) {
if let navigationController = presentingController as? UINavigationController,
let myDownloadsViewController = navigationController.viewControllers.first(
where: { viewController in
viewController is MyDownloadsViewController
}
) {
navigationController.popToViewController(myDownloadsViewController, animated: true)
}
}
尝试这个:
let viewControllers: [UIViewController] = self.navigationController?.viewControllers ?? []
for viewController in viewControllers {
if viewController == MyDownloadsViewController() {
self.navigationController?.popToViewController(viewController, animated: true)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.