Ios uitabaritem';与导航控制器一起使用时,不显示标题

Ios uitabaritem';与导航控制器一起使用时,不显示标题,ios,swift,uitabbarcontroller,uitabbaritem,Ios,Swift,Uitabbarcontroller,Uitabbaritem,我的简单应用程序有问题 我的应用程序只有两个主视图控制器,称为新闻和分类,每个主视图控制器都有自己的UINavigationController 所以在AppDelegate.swift中,我就这样做了 window = UIWindow(frame: UIScreen.main.bounds) let tabBarController = UITabBarController() let newsVC = NewsVC() // CREATE TAB BAR ITEM WITH TITLE

我的简单应用程序有问题

我的应用程序只有两个主视图控制器,称为新闻和分类,每个主视图控制器都有自己的
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()
let newsVCTabBarItem = UITabBarItem(tabBarSystemItem: .featured, tag: 1)
运行此简单应用程序时,选项卡栏项不会显示任何内容:(

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

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()
let newsVCTabBarItem = UITabBarItem(tabBarSystemItem: .featured, tag: 1)
它工作得很好!很难理解

那么,有人知道为什么我的标题栏项目不起作用吗?我错过了一些重要的东西吗


提前感谢!

title
属性添加到
ViewController
s以在
uitabaritem
中显示标题

var title: String? { get set }
将标题设置为描述视图的可读字符串。 视图控制器具有有效的导航项或选项卡栏项, 将值指定给此属性将更新这些属性的标题文本 对象。

将图像分配给
uitabaritem
以查看结果

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

....

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

.....
更新:

选项卡栏项通过其相应的视图进行配置 控制器。要将选项卡栏项与视图控制器关联,请创建 如果要创建uitabaritem类的新实例,请对其进行适当配置 ,并将其指定给视图控制器的 tabBarItem属性。如果未为提供自定义选项卡栏项 在视图控制器中,视图控制器创建默认项 不包含视图控制器标题中的图像和文本 属性。


在将viewcontroller放入UINavigationController后,尝试设置tabBarItem。我尝试了你的想法,但仍然不起作用:(,嗯,谢谢你的帮助:)很酷!它起作用了,但我仍然感到困惑,如果我将视图控制器的标题设置为与ui选项卡栏项目不同,它将显示VC的标题(但不是我在ui选项卡栏项目中设置的标题),那么ui选项卡栏项中的名称似乎没有用处?是的。如果我们不为选项卡栏项提供图像,它将采用ViewController的title属性。因此,第一个答案仅显示选项卡栏项的标题。如果我们提供图像和标题,则UITabBarController会考虑UITabBarItems。非常高兴帮助您,甚至我也忘记了为什么它是n在使用例如
uitabaritem(tabBarSystemItem:.featured,tag:0)
时,任何线索都不会显示我的自定义标题。尽管设置了
UIViewController
UINavigationController
标题,但它显示为选项卡栏标题“featured”,而不是我的自定义标题。