嵌套的 UINavigationControllers 和 TabBarController
Nested UINavigationControllers and TabBarController
我在 UI 设计上遇到了一些问题。
备选方案 1:
- UI导航控制器
- 标签栏控制器
- 地图视图控制器
- UI导航控制器
- UITableViewController
- DetailViewController
备选方案 2:
- UI导航控制器
- 标签栏控制器
- 地图视图控制器
- UITableViewController
- DetailViewController
在 DetailViewController 的 navigationitem
中的备选方案 1 中,backButton
和 title
未显示,但我有较低的 tabbar
。
在 DetailViewController 的 navigationitem
中的备选方案 2 中,backButton
和 title
是可见的,但我缺少较低的 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 是一个推送,例如'Show' 继续。
嘿,我建议备选方案 3:
- UINavigationController
- 标签栏控制器
- 导航控制器
- 地图视图控制器
- 导航控制器
- Table 视图控制器
- 详细视图控制器
您基本上希望将 Tab Bar Controller 管理的两个 View Controller 包装在 Nav Controllers 中
是的,我实现了相同的场景并面临相同的问题,幸运的是我能够在我的应用程序中解决这个问题,
我建议备选方案 1
您可以在 AppDelegate 中设置初始 UINavigationController 并使用相同的导航控制器维护应用程序流,直到嵌套 UINavigationController。并将 TabBar 控制器设置为 RootViewController
在嵌套的NavigationController 的RootViewController 中,请隐藏AppDelegate navigationController 的NavigationBar。因此,您能够解决您面临的备选方案 1 的问题。
我引用了这个库:https://github.com/juliorimo/CustomTabBar-iOS
(注意:这个库只是一个 UINavigationController 和 TabbarController 进一步嵌套的 UINavigationController 流程你必须维护)
我在 UI 设计上遇到了一些问题。
备选方案 1:
- UI导航控制器
- 标签栏控制器
- 地图视图控制器
- UI导航控制器
- UITableViewController
- DetailViewController
- UITableViewController
- 标签栏控制器
备选方案 2:
- UI导航控制器
- 标签栏控制器
- 地图视图控制器
- UITableViewController
- DetailViewController
- 标签栏控制器
在 DetailViewController 的 navigationitem
中的备选方案 1 中,backButton
和 title
未显示,但我有较低的 tabbar
。
在 DetailViewController 的 navigationitem
中的备选方案 2 中,backButton
和 title
是可见的,但我缺少较低的 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 是一个推送,例如'Show' 继续。
嘿,我建议备选方案 3:
- UINavigationController
- 标签栏控制器
- 导航控制器
- 地图视图控制器
- 导航控制器
- Table 视图控制器
- 详细视图控制器
- Table 视图控制器
- 导航控制器
- 标签栏控制器
您基本上希望将 Tab Bar Controller 管理的两个 View Controller 包装在 Nav Controllers 中
是的,我实现了相同的场景并面临相同的问题,幸运的是我能够在我的应用程序中解决这个问题,
我建议备选方案 1
您可以在 AppDelegate 中设置初始 UINavigationController 并使用相同的导航控制器维护应用程序流,直到嵌套 UINavigationController。并将 TabBar 控制器设置为 RootViewController
在嵌套的NavigationController 的RootViewController 中,请隐藏AppDelegate navigationController 的NavigationBar。因此,您能够解决您面临的备选方案 1 的问题。
我引用了这个库:https://github.com/juliorimo/CustomTabBar-iOS (注意:这个库只是一个 UINavigationController 和 TabbarController 进一步嵌套的 UINavigationController 流程你必须维护)