我正在尝试使用故事板创建一个应用程序,该应用程序有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];