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

时间:2018-11-10 15:39:41

标签: ios swift uitabbarcontroller uitabbaritem

我的简单应用程序遇到了麻烦。

我的应用程序仅具有两个主干UIViewControllers,分别称为新闻和类别,每个主叫都有自己的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)

运行良好!很难理解!

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

提前谢谢!

1 个答案:

答案 0 :(得分:1)

title属性添加到ViewController中以在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属性。 如果您没有为以下项提供自定义标签栏项   您的视图控制器,视图控制器将创建一个默认项   不包含图像和视图控制器标题中的文本   属性。