1

这是我的应用程序的设置:

导航-

-loginVC -如果登录有效,则将 segue 推送到-

    tab bar controller with 3 tabs:
      -in the first tab, is a profile display which modal pushes to a profile editor(not
       issue here)
      -second tab is a searchVC that pushes to a tableVC that shows results. This is  
       where the tab bar disappears
      -The third view is just a VC for updating the database this is linked to.

从字面上看,这就是它在情节提要上的工作方式,并且我确保从 searchVC 到 tableVC 的转场是推送转场。

如何防止标签栏控制器在第二个视图中消失。

4

2 回答 2

2

结构应该是

loginViewController -->modal segue--> tabBarController
                                        |
                                        |
                                        |-->NavController->Item1ViewController
                                        |
                                        |-->NavController->Item2ViewController
                                        |
                                        |-->NavController->Item3ViewController

目前,当您从项目 2 的第一个 viewController 推进时,第二个选项卡项目上的“推送”会将整个选项卡栏控制器推开。

如果你想在你的 loginViewController 上有一个导航栏(为了保持一致性),将它嵌入它自己的 navigationController 但确保你不要从那里继续:modalsegue 或 present with[self presentViewController:tabBarViewController animated:yes completion:nil]

每个标签栏项目的导航控制器都是可选的(取决于您所追求的导航,显然您确实需要一个用于项目 2) - 但您可能希望每个项目都有一个以保持一致性。

更新
@rdelmar 建议这种使用登录屏幕作为根视图控制器的方法——在该控制器之上应用程序的其余部分是“模态”呈现的——是对模态序列的滥用,并建议在而是第一个选项卡项。我理解这一点并将给它更多的思考,但同样我发现替代方案有点不舒服......选项卡项目应该在 tabVC 中共享相同的权重 - 所以让第一个项目呈现一个模式登录控制器,整个应用程序都依赖于它感觉不是很好的程序流程。如果一个应用程序需要用户登录,我看不出登录有什么问题以某种方式支撑它。

我在这里的答案中有一个更完整的描述版本:(如何处理 UINavigationControllers 和 UITabBarControllers iOS 6.1)。这还有一个好处,如果您在应用程序的任何位置提供一个注销按钮,则返回到第一个登录屏幕的展开切换 - 有效地取消显示整个登录的应用程序堆栈 - 将很好地工作。

一个不同的解决方案 - 与@rdelmar's 一致 -如果第一个 viewController 不在选项卡栏控制器中,则以模态方式显示登录屏幕。这可能在我前面提到的答案中起作用,因为登录后的第一个屏幕是一个嵌入导航控制器的视图控制器。但是,从展开到注销不会那么干净。

最后,我怀疑这可能只是一种风格,只要流逻辑保持健壮,我们就不应过于纠结。

于 2013-04-10T03:14:55.490 回答
0

除非您有另一个未提及的导航控制器,否则您的推送来自作为初始控制器的导航控制器。因此,从中推,将 tableVC 放在导航控制器的视图控制器中的选项卡栏控制器的顶部。

我建议您将标签栏控制器设置为窗口的根视图控制器。让 loginVC 从控制器的第一个选项卡(从其 viewDidAppear 方法)以模态方式呈现,以便在应用程序启动时首先出现。第二个选项卡应该有一个导航控制器作为它的根控制器,searchVC 作为导航控制器的根视图控制器。

于 2013-04-10T03:14:14.523 回答