iOS 10 UITabbar 选择其他选项卡在索引 0 中显示它的标题

Posted

技术标签:

【中文标题】iOS 10 UITabbar 选择其他选项卡在索引 0 中显示它的标题【英文标题】:iOS 10 UITabbar selecting other tab shows it's title in index 0 【发布时间】:2016-10-18 11:11:01 【问题描述】:

我使用 UITabbar 显示 5 个选项卡。当我按下按钮时,第一个标签标题如何不断变化。例如,让标签栏名称为“first”、alpha、beta、gamma。 我选择“第一个”标签栏并单击屏幕中的一个按钮,该按钮不断将标题名称更改为“第二个”、“第三个”等等。 我的问题是当应用程序启动时标题文本显示 2 个相同的名称。一种是选择的蓝色,另一种是取消选择的灰色。当我选择选项卡 alpha、beta、gamma 时,这些标题也适用于“第一”。所以文本聚集在第一个标签栏中。这在 ios 9 中运行良好。从 iOS 10 我得到这个标题问题。标签栏图像工作正常,没有重复。

FirstViewCtrl* tripVc = [ FirstViewCtrl new ];
UINavigationController* firstNavCtrl = [ [ UINavigationController alloc ] initWithRootViewController:firstVc ];


UITabBarController* tabBarController = [ UITabBarController new ];
[ tabBarController.tabBar setBarStyle:UIBarStyleBlack ];
tabBarController.viewControllers = @[firstNavCtrl, alphaNavCtrl, betaNavCtrl, gammaNavCtrl];

tripVc.tabBarItem = [ [ UITabBarItem alloc ] initWithTitle:@"First" image:[ UIImage imageNamed:@"firstIcon"] selectedImage:[UIImage imageNamed:@"firstIcon_mo"] ];

[ self.view addSubview:tabBarController.view ];

我用不同的方法解决了这个问题。我不确定这是否正确或为什么会发生。而不是设置

[ self setTitle:@"First" ]; 

我设置为

[ self.navigationItem setTitle:@"First" ];
[ self.tabBarItem setTitle:@"First" ];

通过这种方式,如果我想更改标题,则文本不会重叠。 任何知道为什么 iOS 10 会发生这种情况的人

【问题讨论】:

【参考方案1】:

您需要为所有 ViewController 设置标题。 比如下面

FirstViewCtrl* tripVc = [ FirstViewCtrl new ];
tripVC.title = @"First";

alphaNavCtrl* tripVc = [ alphaNavCtrl new ];
alphaNavCtrl.title = @"alpha";

【讨论】:

即使我为所有视图控制器设置了标题,我仍然会在我的第 0 个标签栏索引中获得另一个标签栏标题名称。为了清楚起见,我在“first”这个词上覆盖了“alpha”这个词。当我单击 beta 时,它被覆盖的第一个索引也是如此。当我单击所有 4 个选项卡时,我会在第一个索引上覆盖所有标题名称。 没有。它在 iOS 9 中运行良好,但错误从 iOS10 开始。如果您检查此问题,他还会获得更多图像。对我来说,我在 TabBarcontroller 的索引 0 中得到多个文本。 ***.com/questions/38776978/…

以上是关于iOS 10 UITabbar 选择其他选项卡在索引 0 中显示它的标题的主要内容,如果未能解决你的问题,请参考以下文章

iOS:如何选择 UITabBar 中的特定选项卡和此选项卡中的特定行

iOS 7.1 打破 UITabbar 图像选定状态

选择 UITabBar 时调用方法?

iOS 8、iOS 9、iOS 10 和 iOS 11 上的 UITabBar 的高度是多少?

仅自动旋转 UITabBar 内的一些选项卡? (iOS 5)

UITabbar 以编程方式选择选项卡并执行egue