【问题标题】:How to segue to one view controller from multiple navigation controllers and when done go back to whichever view controller presented it swift如何从多个导航控制器中切换到一个视图控制器,并在完成后快速返回到呈现它的任何视图控制器
【发布时间】:2016-09-24 02:47:40
【问题描述】:

所以我有两个导航控制器层次结构,它们都通向一个视图控制器。我传递了一个视图控制器数据,基于哪个视图控制器数据向它提供了推送序列。如何关闭最终的视图控制器并返回显示它的导航堆栈?我不需要传回任何信息,但是当我尝试执行 unwind segue 时,我收到一条错误消息,指出“此类与键 doneButtonTapped 的键值编码不兼容”我尝试了 unWind segue 和 popVC segue。

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

谢谢

【问题讨论】:

    标签: ios swift uiviewcontroller uistoryboardsegue


    【解决方案1】:

    你只需要调用popViewController 来关闭视图控制器。它将自动跟随由导航控制器 A 或 B 创建的导航堆栈。

    如果你想弹出到第一个 viewcontroler 然后可以调用popToRootViewController

    希望这会有所帮助:)

    【讨论】:

    • 实际上我已经在同一个 VC 上设置了两次 doneButtonTapped Action。哎呀。现在是凌晨 5 点,当我开始做这样的事情时,就该收工了。您的回答确实有助于确认我正在尝试做的事情是可能的。谢谢!
    【解决方案2】:

    只需为导航控制器设置故事板 ID,一旦您到达最终视图控制器。只需使用:

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

    使用 prepareForSegue 获取所需的 NavigationViewController

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

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

    不要忘记实现 prepareForSegue 以使 performSegueWihIdentifier 工作

    【讨论】:

      猜你喜欢
      • 2018-09-11
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-11
      • 1970-01-01
      • 2015-06-13
      • 2021-09-20
      相关资源
      最近更新 更多