繁体   English   中英

如何通过单击关闭并弹出视图 controller

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM