【问题标题】:How to deal with a navigation controller inside a tab bar controller?如何处理标签栏控制器内的导航控制器?
【发布时间】:2012-05-30 01:39:48
【问题描述】:
我有以下情况:我从一个登录屏幕开始(我希望它没有工具栏或标签栏。)用户登录后,我想显示一个标签栏,其中包含多个选项,每个选项都可以钻取向下进入他们自己的视图层次结构。因此,这些选项卡中的每一个都必须具有导航控制器功能。
因此,最直接的解决方案是拥有一个标签栏控制器,然后让每个部分(总共 3 个)拥有自己的导航控制器。但是,问题是我希望整个应用程序中的每个页面都有一个注销按钮,可以将它们带回第一个屏幕。
我可以将每个页面的注销按钮都从头切换到开头,但这似乎是错误的。我还可以将标签栏控制器放在导航控制器中;但是我听说导航控制器应该始终在标签栏控制器内,而不是相反。
任何建议
【问题讨论】:
标签:
objective-c
ios
xcode
【解决方案1】:
如果每个 UINavigationController 的根视图控制器是登录屏幕,为什么不为每个适当的视图分配一个注销按钮给 self.navigationItem.rightBarButtonItem。点击后会调用你的注销函数,然后popToRootViewControllerAnimated:带你回到登录界面。
您可以在任何您希望或不希望显示导航栏的视图中使用setNavigationBarHidden:animated:。
【解决方案2】:
将您的“登录”屏幕作为模式视图控制器显示在导航控制器的标签栏控制器之上。每当您从应用程序中的任何位置注销时,您都会呈现一个新的模式登录视图,然后可以在其他控制器不再可见时重置它们的状态。登录时,您关闭模式并显示标签栏控制器及其包含的任何内容。