标签栏控制器无法正确显示

时间:2012-02-27 13:09:56

标签: objective-c ios cocoa-touch ios5

我正在尝试将标签栏控制器连接到我的应用程序的现有部分,但是当我这样做时,它“出现故障”。

但是,当我将Tab Bar Controller部件独立运行作为初始视图控制器时,它可以正常工作,如下图所示:

enter image description here

这是app在运行时的外观(正确行为):

enter image description here

但是,当我从主应用程序转到此标签栏控制器时,它的外观如下:

enter image description here

我的主应用程序看起来像这样:

滚动视图包含

  • UIView 1
  • UIView 2
  • UIView 3
  • UIView x

每个视图都会执行与此标签栏控制器无关的操作。只有一个视图视图x尝试“访问”标签栏控制器并在那里显示一些数据,但事实并非如此。有什么想法吗?

我将此标签栏控制器标识符设置为测试,我在这里是如何从我的视图x中执行此操作:

UITabBarController *newViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"test"];
        [self.view addSubview:newViewController.view];

编辑:

整个应用:

enter image description here

我正在以编程方式创建视图。这就是为什么我没有与标签栏控制器有任何关系/隔离。

解决方案:

更改:

UITabBarController *newViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"test"];
            [self.view addSubview:newViewController.view];

致:

UITabBarController *newViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"test"];
        [self addChildViewController:newViewController];
        [self.view addSubview:newViewController.view];

2 个答案:

答案 0 :(得分:2)

您需要将根视图控制器设置为导航控制器

答案 1 :(得分:1)

只需不要执行此操作。来自Apple UITabBarController referenece

  

因为UITabBarController类继承自UIViewController类,所以选项卡栏控制器具有可通过view属性访问的自己的视图。部署选项卡栏界面时,必须将此视图安装为窗口的根目录。与其他视图控制器不同,标签栏界面不应该作为另一个视图控制器的子项安装。

据我所知,这意味着您必须仅将UITabBarController用作窗口的根视图控制器。但是你总是可以使用一般的UIViewController并在那里添加UITabBar。

(您遇到的视图偏移问题可以修复,但不会遵循Apple指南,不建议使用。)