标签栏控制器未正确显示

Posted

技术标签:

【中文标题】标签栏控制器未正确显示【英文标题】:Tab bar controller not appearing correctly 【发布时间】:2012-02-27 13:09:55 【问题描述】:

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

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

这是应用运行时的外观(正确行为):

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

我的主应用如下所示:

滚动视图包含

UIView 1 UIView 2 UIView 3 UIView x

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

我有这个标签栏控制器标识符设置为测试,我在这里是我从我的观点 x 做的:

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

编辑:

整个应用:

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

解决方案:

改变:

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];

【问题讨论】:

【参考方案1】:

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

【讨论】:

我只希望我的众多视图之一指向导航控制器,我仍然想从我的应用程序开始(根视图控制器从它当前开始的位置开始)。也许我错过了解释您的答案,可以给出更详细的答案吗?谢谢 尝试在tabbarviewcontroller中将函数“Addsubview”改为“Addchildviewcontroller”【参考方案2】:

只是不要这样做。来自 Apple UITabBarController 参考

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

据我了解,这意味着您只能将 UITabBarController 用作窗口的根视图控制器。但是你总是可以使用通用的 UIViewController 并在那里添加 UITabBar。

(您遇到的视图偏移问题可能会被修复,但它不会遵循 Apple 指南,因此不建议这样做)。

【讨论】:

这是一个有效的观点,你会如何建议我这样做。我希望此选项卡栏控制器用于我的应用程序中的选项,并且我需要将它们安排在某种选项卡中,这样用户就不会被信息淹没。你将如何实现这个,+1 的答案 我建议使用 UISegmentedControl 作为设置视图,它应该符合 Apple 指南并且应该完美匹配用户体验(例如,请参阅设置应用程序中的 Wi-Fi 网络详细信息视图) .如果您真的想在导航层次结构的中间使用 TabBar,并且它必须与 TabBar 关联而不是其他任何东西,请准备好被拒绝的应用程序(我不是说它会,但它可能会)。如果您需要任何关于 UISegmentedControl 或 UITabBar 的教程而不是 UITabBarController,您可以尝试谷歌获取详细信息,其中有很多为您准备好的。

以上是关于标签栏控制器未正确显示的主要内容,如果未能解决你的问题,请参考以下文章

自定义标签栏背景图像未正确显示

导航和标签栏控制器未显示

标签栏控制器未显示栏按钮项

标签栏控制器未显示所有标签

标签栏 UIViewController 中导航栏中的按钮未显示

Xcode 导航栏、标签栏、表格视图标题未显示