我有一个视图控制器(1),它列出了表中的一些实体。如果用户想添加一个新的实体,他们可以单击“添加”按钮,然后转到VC2(一个视图,包含一个表单,用于填写添加新实体所需的字段)。在VC2上添加实体后,我希望它们自动转发到与刚刚添加的实体相关的详细信息屏幕VC3。通常,这个细节屏幕VC3是从VC1中从表中单击现有实体时的分段。
目前在VC2我有

//go back to VC1
navigationController?.popViewController(animated: true)
//Segue to VC3
VC1?.performSegue(withIdentifier: "goToDetail", sender: self)

问题是用户看到视图变回VC1,然后由于“pop”而变回VC3,然后segue。
如果我省略navigationController?.popViewController(animated: true)并直接转到VC3,它将按预期工作,除非用户使用VC3的后退按钮将它们返回到VC2,这是他们填写的表单,但我真的希望他们跳过VC2并返回VC1。

最佳答案

你有两个明显的选择,都很容易。
继续从VC2推到VC3,然后通过用setViewControllers(_:animated:)]调用[VC1,VC3从堆栈中移除VC2,或者。。。
通过调用popToRootViewController(animated:),更改用户从VC3弹出时发生的情况,以便我们一直弹出到VC1。

09-07 13:42