我需要在导航堆栈中的视图控制器(比如视图控制器 3)中有一个选项卡类型的视图,并将由另一个视图控制器(比如视图控制器 2)推送。
我添加了工具栏来查看带有许多按钮的控制器 3。但是管理和切换视图似乎很困难。
如何在导航堆栈的中间添加标签栏控制器。请帮帮我。
我需要在导航堆栈中的视图控制器(比如视图控制器 3)中有一个选项卡类型的视图,并将由另一个视图控制器(比如视图控制器 2)推送。
我添加了工具栏来查看带有许多按钮的控制器 3。但是管理和切换视图似乎很困难。
如何在导航堆栈的中间添加标签栏控制器。请帮帮我。
您可以在视图控制器中间创建标签栏,您可以使用自定义段控制器创建标签栏结构。检查下面的链接以创建自定义段控制器。
您不能在此处添加 TabBar - tabBar 仅设计为位于底部。您必须创建自己的 ViewController 并将其添加为 navigationViewController 的子视图并实现整个切换方法。
在相关问题中已经对此设计进行了一些讨论。
我理解你的问题的方式是绝对有可能的。我将 a 推UITabBarController
到UIViewController
嵌入在 a 中的 a上UINavigationController
。除了我以编程方式实现的推送之外,我在 interfacebuilder 中完成了所有操作。
因此,在ViewController.m中,我向按钮添加了一个操作:
- (IBAction)searchForPlacesButtonPressed:(id)sender {
TabBarController *tc = [[self storyboard] instantiateViewControllerWithIdentifier:@"TabBarController"];
tc.title = @"Orte";
tc.tabBar.selectedImageTintColor = [UIColor colorWithRed:(28.0f/255.0f) green:(100.0f/255.0f) blue:(52.0f/255.0f) alpha:1.0f];
UIBarButtonItem * logo = [[UIBarButtonItem alloc] initWithCustomView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon_xyz"]]];
tc.navigationItem.rightBarButtonItem = logo;
Places *d = [[Places alloc] init];
for (UIViewController *vc in tc.viewControllers) {
if ([vc isKindOfClass:[MapViewController class]]) {
((MapViewController *)vc).dataHandler = d;
((MapViewController *)vc).mapViewDelegate = d;
vc.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Karte" image:[UIImage imageNamed:@"map"] tag:0];
}
else if ([vc isKindOfClass:[TableViewController class]]) {
((TableViewController *)vc).dataHandler = d;
vc.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Liste" image:[UIImage imageNamed:@"eye"] tag:1];
}
}
[self.navigationController pushViewController:tc animated:YES];
}
使用底部的选项卡,您可以在地图上查看地点和表格中列出的地点之间切换。