我正在尝试将标签栏控制器连接到我的应用程序的现有部分,但是当我这样做时,它“出现故障”。
但是,当我将Tab Bar Controller部件独立运行作为初始视图控制器时,它可以正常工作,如下图所示:
这是app在运行时的外观(正确行为):
但是,当我从主应用程序转到此标签栏控制器时,它的外观如下:
我的主应用程序看起来像这样:
滚动视图包含
每个视图都会执行与此标签栏控制器无关的操作。只有一个视图视图x尝试“访问”标签栏控制器并在那里显示一些数据,但事实并非如此。有什么想法吗?
我将此标签栏控制器标识符设置为测试,我在这里是如何从我的视图x中执行此操作:
UITabBarController *newViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"test"];
[self.view addSubview:newViewController.view];
编辑:
整个应用:
我正在以编程方式创建视图。这就是为什么我没有与标签栏控制器有任何关系/隔离。
解决方案:
更改:
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];
答案 0 :(得分:2)
您需要将根视图控制器设置为导航控制器
答案 1 :(得分:1)
只需不要执行此操作。来自Apple UITabBarController referenece
因为UITabBarController类继承自UIViewController类,所以选项卡栏控制器具有可通过view属性访问的自己的视图。部署选项卡栏界面时,必须将此视图安装为窗口的根目录。与其他视图控制器不同,标签栏界面不应该作为另一个视图控制器的子项安装。
据我所知,这意味着您必须仅将UITabBarController用作窗口的根视图控制器。但是你总是可以使用一般的UIViewController并在那里添加UITabBar。
(您遇到的视图偏移问题可以修复,但不会遵循Apple指南,不建议使用。)