在Xcode Swift中的不同导航控制器之间移动

时间:2017-11-08 15:48:03

标签: swift xcode storyboard

我想从一个导航控制器移动到另一个导航控制器,如果我从联系VC到聊天,我想按下后退按钮我移动到Inbox VC这个流程是我想要的。 我尝试了segue并推送导航控制器,但它回到它来的VC表格

select contact in contact list and move to chat VC and in chatVC, on pressing back button which shows in navigation bar I move to inbox VC

2 个答案:

答案 0 :(得分:0)

UINavigationController是基于堆栈的导航系统。这意味着当您向前导航时,您只需将另一个UIViewController添加到堆栈中,当您向后导航时,您将从堆栈中弹出UIViewContrller

要执行您提出的建议,您需要更改当前位于导航堆栈中的基础UIViewController。您可以通过func setViewControllers(_ viewControllers: [UIViewController], animated: Bool)UINavigationController编程方式执行此操作,但不能通过故事板执行此操作,因为这不是UINavigationController的用途。

答案 1 :(得分:0)

UINavigationController控制器在将新视图控制器推入其中时保留一堆视图(简单来说就是理解)。因此,当您按下它时,它基本上会弹出最后一个视图控制器以显示其父控制器。这也是iOS平台上的正常用户行为。

您正在查看与用户相反的行为,因为您正在打破他们的导航流程。但是,如果你能有一个强有力的案例。您可以手动创建一个后退按钮,该按钮可以推送到收件箱控制器,以便在代码或界面构建器中获得此类行为。

实现这一目标的另一种方法可能是你在其他应用程序中看到的:

  1. 你有一个注册视图控制器(可能是表单)。注册完成后。
  2. 将窗口的根视图控制器更改为收件箱控制器和
  3. 同时,按下聊天控制器,这样当用户按下后退按钮时,它们将被带回收件箱。