我有一个项目是一个标签栏控制器。每个选项卡通常都有一个UINavigationController。我的问题是:我需要一个带有很多导航的新选项卡(大约30个导航项目分组为4-8组。问题:我的导航栏已经满了(不能使用导航控制器(或栏)。我需要的是导航栏下方的导航栏(它有一个全局搜索栏和其他全局图标填充它)。我怎样才能实现这一点?
我现在拥有的:我在导航栏下创建了一个UIScrollView作为我的“手动”导航栏。这是一个scrollView,因为我不知道(向前)我将拥有多少个“分组”导航项目(目前只有4个)。这些组中的每一个都由一个UIButton表示,其中一些应该立即呈现一个视图,而另一些则使用其他导航项呈现一个弹出窗口,选中后将显示一个视图。
问题:我想在上面提到的导航视图下看一个“内容视图”,我可以根据用户的导航选项显示内容。我必须支持iOS 5.0,所以我不能使用storyboard容器视图(不幸的是)。我将提供3种类型(可能更晚)的内容视图,我想创建单独的视图控制器,然后在我提到的导航中选择适当的视图控制器。我可以使用第三方导航控制器吗?我必须“自己动手”吗?任何建议将不胜感激。
这是我需要实现的“共同拍摄”图片:
答案 0 :(得分:0)
我会将您正在调用内容视图的内容视为主视图的子视图,并将其用作添加childViewController视图的视图。如果你还没有读过自定义容器控制器,你应该这样做,但使用它们的基本方法是这样的。
您在问题中显示的视图的控制器将是自定义容器控制器。您可以在viewDidLoad方法中加载初始控制器,然后在子视图中切换控制器(我称之为self.containerView)以响应用户从滚动条中选择的内容:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
UIViewController *initial = [self.storyboard instantiateViewControllerWithIdentifier:@"InitialVC"];
[self addChildViewController:initial];
[initial.view.frame = self.containerView.bounds];
[self.containerView addSubview:initial.view];
self.currentController = initial;
}
-(void)switchToNewViewController:(UIViewController *) cont {
[self addChildViewController:cont];
cont.view.frame = self.containerView.bounds;
[self moveToNewController:cont ];
}
-(void)moveToNewController:(UIViewController *) newController {
[self.currentController willMoveToParentViewController:nil];
[self transitionFromViewController:self.currentController toViewController:newController duration:.6 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{}
completion:^(BOOL finished) {
[self.currentController removeFromParentViewController];
[newController didMoveToParentViewController:self];
self.currentController = newController;
}];
}
这应该给你基本的想法。我从我的一个测试项目中获取了这个,所以可能需要稍微调整一下。