ios - 在 segue 之后关闭 View Controller

标签 ios swift segue viewcontroller dismiss

我想要的是在执行 segue 后关闭 viewController,这样新 View 上的导航 Controller 的后退按钮就不会返回到我刚刚关闭的 View ,但是它转到 Storyboard 中它之前的 View ,就像它是第一次加载一样。

enter image description here

我已经尝试过诸如 dismiss 之类的东西,但它对我来说并没有真正起作用,因为它只关闭了我为执行该功能而按下的按钮所在的 View :

@objc func goToList(){
   self.dismiss(animated: true, completion: nil)
   performSegue(withIdentifier: "goToList", sender: nil)
}

最佳答案

导航 Controller 维护已打开(推送)的 ViewController 的堆栈(数组)。它还能够将这些 ViewController 从堆栈中弹出,直到它到达特定的一个。

例如,如果您希望返回到之前类型为 MyInitialVC 的 View Controller ,那么您需要搜索堆栈直到找到该类型的 VC,然后弹出到它:

let targetVC = navigationController?.viewControllers.first(where: {$0 is MyInitialVC})
if let targetVC = targetVC {
   navigationController?.popToViewController(targetVC, animated: true)
}

注意。在没有 XCode 的情况下从内存中编写,因此您可能需要更正小错别字

关于ios - 在 segue 之后关闭 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58489415/

相关文章:

ios - 如何在 UINavigationBar 中添加垂直渐变颜色?

iOS Alamofire : read cookie before autoredirect

ios - 无法从维基百科 API 恢复图像并将其显示在另一个 View Controller 中

ios segue无法识别的选择器发送到实例

ios - 协议(protocol)扩展编译器错误中的 Swift 2.2 #selector

ios - 使用核心数据将联系人保存到 TableView 中

ios - Xcode 8 约束

swift - 由于总线错误 : 10,Xcode 无法构建项目

ios - 从通过 WebSocket 发送的 JSON 数据在 Swift 中发送 POST 请求

ios - 如何segue UIImage?