嵌套的UINavigationControllers和TabBarController

时间:2015-03-25 16:00:45

标签: ios ios8 uinavigationcontroller uinavigationitem

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

备选方案1:

  • 的UINavigationController
    • TabBarController
      • 的MapViewController
      • UINavigationContoller
        • 的UITableViewController
          • DetailViewController

备选方案2:

  • 的UINavigationController
    • TabBarController
      • 的MapViewController
      • 的UITableViewController
        • DetailViewController

在DetailViewController navigationitem的备选方案1中,backButtontitle未显示,但我的tabbar更低。

在DetailViewController的navigationitem的备选方案2中,backButtontitle可见,但我错过了较低的tabbar

是否有任何方法可以同时拥有备选方案1& 2?

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

修改

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是一个推动,例如'查看' SEGUE。

2 个答案:

答案 0 :(得分:1)

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

我建议替代方案1

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

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

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

答案 1 :(得分:-2)

嘿,我建议备选方案3:

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

您基本上希望由Tab Bar Controller管理的两个View Controller包装在Nav Controllers