如何处理标签栏控制器内的导航控制器?

时间:2012-05-29 17:29:18

标签: objective-c ios xcode

我有以下情况:我从登录屏幕开始(我想要没有工具栏或标签栏。)用户登录后,我想显示一个标签栏,其中有多个选项,每个选项都可以钻取进入他们自己的视图层次结构。因此,每个选项卡都必须具有导航控制器功能。

因此,最直接的解决方案是使用标签栏控制器,然后让每个部分(总共3个)拥有自己的导航控制器。但问题是,我希望整个应用程序中的每个页面都有一个注销按钮,这将使它们返回到第一个屏幕。

我可以从每个页面的注销按钮回到开头,但这似乎是错误的。我也可以将标签栏控制器放在导航控制器内;但是我听说导航控制器应该始终位于标签栏控制器内,而不是相反。

任何建议

2 个答案:

答案 0 :(得分:2)

如果每个UINavigationController的根视图控制器都是登录屏幕,为什么不为每个适当的视图分配一个注销按钮self.navigationItem.rightBarButtonItem。单击后,它可以调用您的注销功能,然后popToRootViewControllerAnimated:将您带回登录屏幕。

您可以在任何想要的视图中使用setNavigationBarHidden:animated:,也可以不希望显示导航栏。

答案 1 :(得分:1)

出示您的"登录"屏幕作为导航控制器的标签栏控制器顶部的模态视图控制器。无论何时从应用程序中的任何位置注销,您都会显示一个新的模态登录视图,然后可以在其他控制器不再可见时重置其状态。登录时,您将关闭模态并显示标签栏控制器及其包含的内容。