与导航控制器一起使用时,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
属性添加到ViewController
s 以在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)
时,任何线索都不会显示我的自定义条形标题?尽管设置了 UIViewController
和 UINavigationController
标题,但它显示为标签栏标题“精选”而不是我的自定义标题。以上是关于与导航控制器一起使用时,UITabBarItem 的标题不显示的主要内容,如果未能解决你的问题,请参考以下文章
在 UIBarButtonItem 下添加标签,如在 UITabBarItem [重复]
触发连接到 UITabBarItem 的 UIViewController
UINavigationbar/UINavigationItem/UITabBar/UITabButton/UITabBarItem粑粑粑粑~