【问题标题】:Nested UINavigationControllers and TabBarController嵌套 UINavigationControllers 和 TabBarController
【发布时间】:2015-05-29 10:01:02
【问题描述】:

我在 UI 设计方面遇到了一些问题。

备选方案 1:

  • UINavigationController
    • 标签栏控制器
      • 地图视图控制器
      • UINavigationContoller
        • UITableViewController
          • DetailViewController

备选方案 2:

  • UINavigationController
    • 标签栏控制器
      • 地图视图控制器
      • UITableViewController
        • DetailViewController

在 DetailViewController 的 navigationitem 的替代 1 中,backButtontitle 没有显示,但我有较低的 tabbar

在 DetailViewController 的 navigationitem 的备选方案 2 中,backButtontitle 可见,但我缺少较低的 tabbar

有没有办法同时拥有备选方案 1 和 2 的功能?

我需要最顶层的导航控制器,因为在 TabBarViewController 中我有一个显示侧边菜单 (SWRevealViewController) 的 LeftBarButtonItem。

编辑

TableViewController 中的代码

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    poiDetail = [poiManager.listOfPois objectAtIndex:indexPath.row]; // does not work with regions-sections
    [self performSegueWithIdentifier:@"poiDetail" sender:self];
}

“poiDetail”segue 是一个推送,例如'显示'转场。

【问题讨论】:

  • 备选方案 1 应该可以。我不确定你是如何编码的。你能在这里分享一些 codr。
  • ViewController的代码
  • 从在表格视图控制器中选择,当推送到细节时
  • navigationController 中添加tabBarController 不是一个好主意。参考:stackoverflow.com/questions/576764/…
  • 您可以将 navigationController 添加到 tabBarController 的所有选项卡,然后您可以将侧菜单 (SWRevealViewController) 添加到所有导航控制器。 (主要问题是大部分侧边菜单库不支持tabBarController)

标签: ios ios8 uinavigationcontroller uinavigationitem


【解决方案1】:

是的,我实现了相同的场景并面临相同的问题,幸运的是我能够在我的应用程序中解决这个问题,

我建议备选方案 1

您可以在 AppDelegate 中设置 Initial UINavigationController 并使用相同的导航控制器维护应用程序流,直到嵌套 UINavigationController。并将 TabBar 控制器设置为 RootViewController

在嵌套 NavigationController 的 RootViewController 中,请隐藏 AppDelegate navigationController 的 NavigationBar。因此,您能够解决您面临的备选方案 1 的问题。

我引用了这个库:https://github.com/juliorimo/CustomTabBar-iOS (注意:这个库只是一个 UINavigationController 和 TabbarController 进一步嵌套的 UINavigationController 流你必须维护)

【讨论】:

  • 如何隐藏根 UINavigationController 的 NavigationBar?
  • appDelegate.navigationController.navigationBar.hidden = true; => 通过将此行添加到 NestedNavigationController 的 RootViewController
  • 是的,谢谢。我不需要在 AppDelegate 中保存引用,因为我使用的是 SWRevealViewController,并且所有 UIViewController 都有指向它的指针。当从导航堆栈中弹出详细视图时,我应该再次显示它。谢谢!
【解决方案2】:

嘿,我建议备选方案 3:

  • UINavigationController
    • 标签栏控制器
      • 导航控制器
        • 地图视图控制器
      • 导航控制器
        • 表视图控制器
          • 详细视图控制器

您本质上希望将 Tab Bar Controller 管理的两个 View Controller 包装在 Nav Controller 中

【讨论】:

  • mapviewcontroller 包装的这种变化与另一个分支中的 detailviewcontroller 有什么关系?
  • 它是一种更简洁、更有条理的应用设置方式。它还可以解决您的详细视图控制器中没有导航项的问题。后退按钮是否出现在您的表视图控制器中,您是否正在推送到详细视图控制器,例如 [self.navigationController pushViewController:detailViewController animated:YES];
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-17
  • 2011-09-27
  • 1970-01-01
  • 2016-11-19
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多