1

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

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

我现在正在做的事情如下:我有一个 UINavigationController,它以 ChooseLoginMethod 作为其根视图。ChooseLoginMethod 有几个按钮(用于不同的登录方法),它们是对 EnterLoginData 的推送。EnterLoginData 有一个到 SucessfullLogin 的推送序列,而 SucessfullLogin 有一个到 MainScene 的推送序列。

问题是 SuccessLogin 和 MainScene 在顶部栏显示后退按钮,这对应用程序没有意义。

我试过了:

  • 隐藏这两个视图的顶部栏。不成功。
  • 将 segue 更改为模态。似乎有效,但感觉不是正确的做法。

所以我想做的是创建一个 segue,它打破 UINavigationController 堆栈上的视图链。在情节提要中有正确的方法吗?

- 编辑 -

也许我应该做的是替换根视图(为 UINavigationController 设置根视图)。这可能有效,但似乎是一种编程解决方法,可以在情节提要中完成一些事情。或者也许只是我没有得到“iOS 做事的方式”。

4

2 回答 2

2

您必须setNavigationBarHidden在视图控制器出现在屏幕上之前使用,例如在viewWillAppear.

但是你不能从“MainScene”返回到“RootController”。因此,您应该popToRootViewController在“SuccessfulLogin”之后执行类似操作,然后弹出“MainScene”。

于 2012-12-05T16:51:09.940 回答
1

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

[self.view.window.rootViewController dismissViewControllerAnimated:YES completion:nil];
于 2012-12-05T19:13:39.530 回答