2012-02-27 65 views
3

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

然而,当我运行标签栏控制器部分独立为初始视图控制器,它正常工作像下面的图片中:

enter image description here

这是当它运行的应用程序的外观(正确的行为):

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

我以编程方式创建视图。这就是为什么我没有任何关系/赛格到标签栏控制器。

SOLUTION:

变化:

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

你需要一个根的viewController设置为导航控制器

+2

我只希望我的许多视图中的一个指向导航控制器,我仍然想从我的应用程序(根视图控制器从当前启动的位置开始)开始。也许我很想解释你的答案,可以给出更详细的答案吗?谢谢 – London 2012-02-27 13:22:17

+0

尝试在tabbarview控制器 – Janub 2012-02-27 14:00:09

1

只是这样做。从Apple UITabBarController referenece

由于类的UITabBarController从UIViewController类继承,标签栏控制器有自己的观点,即是通过视图属性进行访问。在部署选项卡栏界面时,必须将此视图安装为窗口的根目录。与其他视图控制器不同,选项卡栏界面不应该被安装为另一个视图控制器的子视图。

据我所知,这意味着你必须只使用UITabBarController作为窗口的根视图控制器。但是你可以一直使用普通的UIViewController并在那里添加UITabBar。

(您遇到的视图偏移问题可能是固定的,但不会遵循Apple指南,但不建议)。

+1

中将“Addsubview”函数更改为“Addchildviewcontroller”,这是一个有效的点,你会如何推荐我去做这件事。我希望这个标签栏控制器可用于我的应用程序中的选项,并且我需要将它们安排在某种标签中,以便用户不会被信息覆盖。你将如何实现这一点,+1为答案 – London 2012-02-27 14:21:18

+0

我会建议使用UISegmentedControl设置视图,它应该是与苹果的指导方针很好,并应完全匹配用户体验(作为一个例子见Wi-Fi网络详细信息视图设置应用程序)。如果你真的想在导航层次结构中使用TabBar,并且它必须与TabBar相关联,并且没有其他任何东西,请准备好应用程序被拒绝(我不是说它会,但它可能是)。如果您需要UISegmentedControl或UITabBar的任何教程而不是UITabBarController,您可以尝试Google获取详细信息,其中有很多已经为您准备就绪。 – 2012-02-28 11:09:21