如何从多个导航控制器切换到一个视图控制器,完成后返回到显示它的任何一个视图控制器 swift

How to segue to one view controller from multiple navigation controllers and when done go back to whichever view controller presented it swift

所以我有两个导航控制器层次结构,它们都指向一个视图控制器。我传递了一个视图控制器数据,该数据基于哪个视图控制器数据通过推送 segue 呈现给它。我如何关闭最终视图控制器并返回到呈现它的导航堆栈?我不需要传回任何信息,但是当我尝试执行 unwind segue 时,我收到一条错误消息,指出 "this class is not key value coding-compliant for the key doneButtonTapped" 我尝试了 unWind segue 和 popVC segue。

我认为问题可能在于您不能将两个独立的导航堆栈通向一个视图控制器,因为该视图控制器不知道它属于哪个堆栈。我尝试研究,但只能找到如何一次关闭多个模态视图,而没有关闭一个 VC 当时 VC 向其呈现的视图。

谢谢

只需为导航控制器设置情节提要 ID,一旦到达最终视图控制器。只需使用:

self.performSegueWithIdentifier(identifier: String, sender: AnyObject?)

使用 prepareForSegue 获取您想要的导航ViewController

设置一个布尔值并从导航视图控制器传递它,同时遍历到最后一个视图控制器。例如,从导航 A 出发时传递 true,从导航 B 出发时传递 false。一旦到达最后的 ViewController,请使用此布尔值:

if boolValue == true {
self.performSegueWithIdentifier(identifier: "identifierforNavA", sender: AnyObject?)
}
else {
self.performSegueWithIdentifier(identifier: "identifierforNavB", sender: AnyObject?)
}

不要忘记为 performSegueWihIdentifier 工作实施 prepareForSegue

您只需拨打 popViewController 即可关闭 viewcontroller。它会自动跟随由导航控制器A或B创建的导航堆栈。

如果你想弹出到第一个视图控制器然后可以调用popToRootViewController

希望这会有所帮助:)