2

我需要在导航堆栈中的视图控制器(比如视图控制器 3)中有一个选项卡类型的视图,并将由另一个视图控制器(比如视图控制器 2)推送。

我添加了工具栏来查看带有许多按钮的控制器 3。但是管理和切换视图似乎很困难。

如何在导航堆栈的中间添加标签栏控制器。请帮帮我。

4

3 回答 3

2

您可以在视图控制器中间创建标签栏,您可以使用自定义段控制器创建标签栏结构。检查下面的链接以创建自定义段控制器。

https://www.cocoacontrols.com/search?q=segment

于 2013-09-10T11:41:17.697 回答
1

您不能在此处添加 TabBar - tabBar 仅设计为位于底部。您必须创建自己的 ViewController 并将其添加为 navigationViewController 的子视图并实现整个切换方法。

于 2013-09-10T11:35:16.337 回答
0

在相关问题中已经对此设计进行了一些讨论。

我理解你的问题的方式是绝对有可能的。我将 a 推UITabBarControllerUIViewController嵌入在 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];
}

使用底部的选项卡,您可以在地图上查看地点和表格中列出的地点之间切换。

于 2013-09-14T22:01:25.473 回答