我怎样才能解雇第二个在第一个 vc 上模态呈现的第一个 vc

Posted

技术标签:

【中文标题】我怎样才能解雇第二个在第一个 vc 上模态呈现的第一个 vc【英文标题】:how can I dismiss first vc that second has presented modally on the first vc 【发布时间】:2018-09-09 08:25:07 【问题描述】:

我有一个名为 "firstVC" 的视图控制器和另一个名为 "secondVC" 的视图控制器。当用户按下 secondVC 上的按钮时,secondVC 将在第一个 vc 上模态显示我想关闭 firstVC 和 secondVC 我在这里调用该方法但它确实执行但什么也不会发生 在 secondVC 中会发生这种情况

firstVC.dismiss(animated: true, completion: nil)

如果您建议我使用委托,请告诉我如何完全使用它?不知道第一个VC应该放什么,第二个VC应该放什么

还有一件事

在其他一些情况下,我需要在 firstVC 中执行 json,当 json 完成后,两个视图控制器(firstVC 和 secondVC)都将被关闭,我该怎么做呢?

【问题讨论】:

如何介绍firstVC? firstVC 是根视图控制器吗? 所有的 vc 都在故事板中 你试过firstVC.presentingViewController?.dismiss(animated: true, completion: nil)吗? @OOPer 这对我不起作用 请解释一下不起作用。发生了什么? 【参考方案1】:

这是使用委托的解决方案:

protocol DismissDelegate
    func dismissVC()


class FirstViewController: UIViewController, DismissDelegate

    func showSecondVC()
        let secondVC = SecondViewController()
        secondVC.delegate = self
    

    func dismissVC()
        self.dismiss(animated: true, completion: nil)
    



class SecondViewController: UIViewController
    var delegate: DismissDelegate?

    @IBAction func buttonAction(sender: UIButton)
        self.dismiss(animated: true, completion: nil)
        delegate?.dismissVC()
    

【讨论】:

以上是关于我怎样才能解雇第二个在第一个 vc 上模态呈现的第一个 vc的主要内容,如果未能解决你的问题,请参考以下文章

所有呈现的视图控制器都不会被解雇

在 iOS 6 中呈现模态视图

WIX React本机导航:堆栈中的第二个屏幕显示在第一个屏幕上

是否可以在模态视图上设置视图?

以模态方式将 VC 呈现在其他 VC 之上 - 两者都是可触摸的

如何使用 iOS 7 自定义转换在顶部呈现半模态视图控制器