在UITabBarController中设置ViewController的标题

问题描述:

我认为这将是一件简单的事情,但我甚至在出现题目时遇到了一些问题。我有一个TabBarController,管理2​​个ViewControllers。 正在呈现tabBarController从嵌入导航控制器的tableView中查看show segue。如果这是正确的,我读过不同的观点。从UI视图来看,这似乎是有意义的。 Person单击表格单元格,并在TabBar控制器视图中显示有关表格单元格的更多详细信息。在UITabBarController中设置ViewController的标题

当我测试应用程序时,即使我在故事板中添加了一个,我也没有看到任何标题。我还在导航栏的右侧添加了一个导航按钮,它根本没有出现。见附图。

设置标题,我试图做这样的事情

self.title = "Some Title Name" 

但同样我的标题,也没有测试应用程序时,我的按钮甚至出现了。当我使用上面的代码行时,它会更改选项卡的标题,而不是视图控制器的标题。

这可能与tabBar是导航控制器的一部分有关,因此控制器是创建和填充标题栏的控件,例如我可以看到的后退按钮。如果是这种情况,我可以在导航栏的右侧添加标题和按钮吗? enter image description here enter image description here

enter image description here

+0

navigationItem.title =“一些标题名称” – bubuxu

+0

这改变了标签的标题(屏幕底部的按钮) – icekomo

当你做self.title = "Some title",您正在设置视图控制器,它做工精细的标题,你可以因为标签栏标题的变化。但是这与导航栏的标题不同。

默认情况下,标签栏的ViewController没有导航栏,您需要将视图控制器嵌入到导航控制器中,或者您可以从故事板元素中拖放导航栏。

如果导航栏来自将视图控制器嵌入导航控制器,那么你可以做self.navigationItem.title = "Some title",它会工作。

但是,如果您通过将UI元素拖放到视图控制器上来获得导航栏。在这种情况下,您必须将该导航栏作为IBOutlet进行连接并进行更改。

@IBOutlet weak var navBar: UINavigationBar! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.navBar.topItem?.title = "Some Title" 
} 

关于现在显示的导航栏,你是否尝试给它添加约束条件?

+0

当我添加一个导航栏时,它自己在navigat下对齐导航控制器添加了前一个视图。该导航栏上有一个后退按钮,我只想知道是否可以在导航栏的右侧添加标题和按钮。 – icekomo

+0

@icekomo是的,你可以。要添加按钮,只需将一个栏按钮项拖到故事板中的导航栏上。 –

+0

故事板中没有可见的导航栏。底部有一个UITabBarItem,但顶部没有。我相信这个导航栏是通过Xcode动态添加的,因为它嵌入了导航。当我选择一个表格单元格时,它会跳到这个标签栏视图控制器是在导航栏创建时。我添加了一些图像来显示故事板和我的文档大纲的外观。 – icekomo

这是我用来解决这些问题:

拿到冠军露面:

tabBarController?.title = "Your Title" tabBarController?.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Right Button Title", style: UIBarButtonItemStyle.Plain, target: self, action: "rightButtonFunction") 

要在导航栏的右侧使用图标

let button = UIButton.init(type: .custom) button.setImage(UIImage.init(named: "pencilIcon.pdf"), for: UIControlState.normal) button.addTarget(self, action:#selector(DetailsViewController.callMethod), for: UIControlEvents.touchUpInside) button.frame = CGRect.init(x: 0, y: 0, width: 30, height: 30) //CGRectMake(0, 0, 30, 30) let barButton = UIBarButtonItem.init(customView: button) tabBarController?.navigationItem.rightBarButtonItem = barButton