在 segue 之后关闭 viewcontroller

Close a viewcontroller after a segue

我想要的是在执行 segue 后关闭 viewController,这样新视图上导航控制器的后退按钮就不会返回到我刚刚关闭的视图,但是它会到情节提要中它之前的视图,就像它是第一次加载一样。

我已经尝试过 dismiss 之类的东西,但它对我来说并不奏效,因为它只会关闭我为执行该功能而按下的按钮所在的视图:

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

您可以使用 unwind segue 返回您想要的每个 viewController
在这里阅读更多内容:
Unwind Segues Step-by-Step (and 4 Reasons to Use Them)

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

例如,如果您希望 return 到前一个 MyInitialVC 类型的视图控制器,那么您需要搜索堆栈直到找到该类型的 VC ,然后弹出:

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

注意。凭记忆写的,没有 XCode,因此您可能需要更正小错别字