【问题标题】:Swift & Navigation : How do I pop until a certain ViewController?Swift & Navigation:如何弹出直到某个 ViewController?
【发布时间】:2021-12-07 01:51:02
【问题描述】:

为了弹出到根视图控制器,我可以使用以下代码。

navigationController?.popToRootViewController(animated: false)

但是如果我想弹出到导航堆栈中的某个视图控制器,我该怎么做呢?请帮我。谢谢。

【问题讨论】:

  • 使用导航控制器的viewControllers属性找到你想弹出到哪个,然后调用popToViewController(_:animated:)弹出到它。
  • 你能给我看一个示例代码吗?
  • 如何知道要弹出到哪个视图控制器?其背后的逻辑是什么?
  • 说我这样做了。一 -> 二 -> 三 -> 四 -> 五。我想从五点到二点。我该怎么做?
  • guard let navigationController = navigationController else { return }; let targetVC = navigationController.viewControllers[1]; navigationController.popToViewController:(targetVC, animated: true) ?这很简单,我没有看到问题。

标签: ios swift uiviewcontroller navigation storyboard


【解决方案1】:

导航控制器包含一组视图控制器,您可以弹出到任何您想要的子控制器。例如,您的流程看起来像:

HomeViewController -> ContactViewController -> ContactDetailsViewController -> ChatViewController

然后从ChatViewController你想推回到ContactViewController

class ChatViewController: UIViewController {
    ....
    func popToContact() {
        if let contactVC = self.navigationController?.viewControllers.filter { $0 is ContactViewController }.first {
            self.navigationController?.popToViewController(contactVC, animated: true)
        }
    }
}

【讨论】:

    猜你喜欢
    • 2014-10-13
    • 2019-12-25
    • 2017-09-14
    • 2015-08-16
    • 1970-01-01
    • 2021-12-07
    • 2018-05-02
    • 1970-01-01
    • 2015-10-20
    相关资源
    最近更新 更多