标签栏控制器未正确显示
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,您可以尝试谷歌获取详细信息,其中有很多为您准备好的。以上是关于标签栏控制器未正确显示的主要内容,如果未能解决你的问题,请参考以下文章