创建新视图的续集而不将其放在当前UINavigationController的堆栈上的正确方法是什么?



我正在尝试使用故事板创建一个应用程序,该应用程序有4个场景:

  • 选择登录方法
  • 输入登录数据
  • 成功登录
  • 主场景

我现在要做的是:我有一个UINavigationController,它的根视图是ChooseLoginMethod。ChooseLoginMethod有几个按钮(用于不同的登录方法),这些按钮是EnterLoginData的推送段。EnterLoginData有一个到SuccessfullLogin的推送段,SuccessfullLogon有一个推送段到MainScene。

问题是SuccessfulLogin和MainScene在顶部栏上显示后退按钮,这对应用程序来说毫无意义。

我试过:

  • 点击这两个视图的顶部栏。不成功
  • 将segue更改为modal。看起来很有效,但感觉不是正确的做法

所以我想做的是创建一个segue,它打破UINavigationController堆栈上的视图链。在故事板中有合适的方法吗?

--编辑--

也许我应该做的是替换根视图(为UINavigationController设置根视图)。这可能可行,但似乎是一个编程工作,应该可以在故事板中完成一些事情。或者可能只是我没有得到"iOS的做事方式"。

在视图控制器出现在屏幕上之前,您必须使用setNavigationBarHidden,就像在viewWillAppear中一样。

但是你不能从"主场景"回到"根控制器"。所以你应该在"成功登录"之后做一些类似popToRootViewController的事情,然后弹出"主场景"。

我认为通常最好将主场景作为根视图控制器。从它的viewDidPear方法中,您可以以模式方式呈现ChooseLoginMethod控制器,并从那里进行到其他登录控制器的模式转换。当你到了最后,你想回到主场景,只需从根视图控制器中消除模态——这将消除第一个模态,以及从中呈现的任何模态:

[self.view.window.rootViewController dismissViewControllerAnimated:YES completion:nil];

最新更新