我已经为一个项目实现了一个自定义的 UITabBar 解决方案。本质上,如果项目超过 5 个,我会使用一个 scrollView,它允许用户滚动其他选项卡项目并抑制更多按钮。在 Weather Channel 应用程序中可以看到类似的外观和感觉。
每个选项卡栏项对应于一个 UINavigationController,它管理每个选项卡的视图堆栈。我遇到的问题是当我有超过 5 个选项卡项时,从选项卡 5 开始无法正确维护导航堆栈。似乎 moreNavigationController 每次返回该选项卡时都会杀死导航堆栈,并且您会再次被带到初始页面。
我已经重写了 setSelectedViewController 方法,如下所示:
- (void) setSelectedViewController:(UIViewController *)selectedViewController {
[super setSelectedViewController:selectedViewController];
if ([self.moreNavigationController.viewControllers count] > 1) {
self.moreNavigationController.viewControllers = [[NSArray alloc] initWithObjects:self.moreNavigationController.visibleViewController, nil];
}
}
此代码将删除左侧导航按钮上的更多功能,但不能解决维护导航堆栈的问题。所有其他选项卡工作正常。我可以遍历几个视图,并且在我离开并返回该选项卡后维护堆栈。我知道这是一个复杂的问题,所以请让我知道是否有我可以提供说明的地方。谢谢!