与导航控制器一起使用时,UITabBarItem 的标题不显示

Posted

技术标签:

【中文标题】与导航控制器一起使用时,UITabBarItem 的标题不显示【英文标题】:UITabBarItem's title does not shown when using with Navigation controller 【发布时间】:2018-11-10 15:39:40 【问题描述】:

我在使用非常简单的应用时遇到了问题。

我的应用只有 2 个主要的 UIViewControllers,分别称为 News 和 Category,每个都有自己的 UINavigationController

所以在AppDelegate.swift,我已经这样做了

window = UIWindow(frame: UIScreen.main.bounds)
let tabBarController = UITabBarController()

let newsVC = NewsVC()

// CREATE TAB BAR ITEM WITH TITLE ONLY
let newsVCTabBarItem = UITabBarItem(title: "News", image: nil, tag: 1)
newsVC.tabBarItem = newsVCTabBarItem

let categoryVC = CategoryVC()

// CREATE TAB BAR ITEM WITH TITLE ONLY
let categoryVCTabBarItem = UITabBarItem(title: "Category", image: nil, tag: 2)
categoryVC.tabBarItem = categoryVCTabBarItem

let rootViewControllers = [newsVC, categoryVC]

// CREATE NAVIGATION CONTROLLER FOR EACH OF THEM
tabBarController.viewControllers = rootViewControllers.map 
    UINavigationController(rootViewController: $0)

window?.rootViewController = tabBarController
window?.makeKeyAndVisible()

当我运行这个简单的应用程序时,标签栏项目不显示任何内容:(

但是当我将UITabBarItem 更改为这样的系统样式时

let newsVCTabBarItem = UITabBarItem(tabBarSystemItem: .featured, tag: 1)

它运行良好!太难理解了!

那么有谁知道为什么我的仅标题标签栏项目不起作用?我错过了什么重要的事情吗?

提前致谢!

【问题讨论】:

将viewcontroller放入UINavigationController后尝试设置tabBarItem。 我已经尝试过你的想法,但它仍然不起作用:(,anw,谢谢你的帮助:) 【参考方案1】:

title 属性添加到ViewControllers 以在UITabBarItem 中显示标题。

var title: String?  get set 

将标题设置为描述视图的人类可读字符串。 如果 视图控制器有一个有效的导航项或标签栏项, 为该属性赋值会更新这些属性的标题文本 对象。

let newsVC = ViewController()
newsVC.title = "News"

.....

let categoryVC = ViewController2()
categoryVC.title = "Category"

.....

或者

将图像分配给UITabBarItem 以查看结果。

let newsVCTabBarItem = UITabBarItem(title: "News", image: UIImage(named: "news.png"), tag: 1)

....

let categoryVCTabBarItem = UITabBarItem(title: "Category", image: UIImage(named: "category.png"), tag: 2)

.....

更新:

标签栏项目通过其对应的视图进行配置 控制器。要将标签栏项与视图控制器关联,请创建 UITabBarItem 类的新实例,对其进行适当配置 用于视图控制器,并将其分配给视图控制器的 tabBarItem 属性。 如果您没有为 您的视图控制器,视图控制器创建一个默认项 不包含图像和视图控制器标题中的文本 财产。

【讨论】:

酷!它有效,但我仍然感到困惑,如果我将视图控制器的标题设置为与 ui 选项卡栏项不同,它会显示 VC 的标题(但不是我在 ui 选项卡栏项中设置的标题),所以 ui 选项卡中的名称酒吧项目似乎没用? 是的。如果我们不为 tabBarItem 提供图像,它需要 ViewController 的 title 属性。所以,第一个答案只显示 tabBarItem 的标题。如果我们提供图片和标题,那么 UITabBarController 会考虑 UITabBarItems。 很高兴为您提供帮助,甚至我也忘记了为什么它暂时不起作用?。 在使用 UITabBarItem(tabBarSystemItem: .featured, tag: 0) 时,任何线索都不会显示我的自定义条形标题?尽管设置了 UIViewControllerUINavigationController 标题,但它显示为标签栏标题“精选”而不是我的自定义标题。

以上是关于与导航控制器一起使用时,UITabBarItem 的标题不显示的主要内容,如果未能解决你的问题,请参考以下文章

将标签栏控制器与导航控制器一起使用时出现问题

在 UIBarButtonItem 下添加标签,如在 UITabBarItem [重复]

触发连接到 UITabBarItem 的 UIViewController

无法让状态恢复与编程导航控制器一起使用

如何将多个自定义视图控制器与导航控制器一起使用?

UINavigationbar/UINavigationItem/UITabBar/UITabButton/UITabBarItem粑粑粑粑~