在UITabBarController中设置ViewController的标题

时间:2016-12-29 23:37:31

标签: ios swift uitabbarcontroller

我认为这是一件很简单的事情,但我的标题甚至出现了一些问题。我有一个TabBarController,它管理2个ViewControllers。 正在呈现tabBarController,从嵌入到导航控制器中的tableView查看show segue。我已经阅读了关于这是否正确的不同观点。对我来说,从UI视图来看似乎有意义。人员点击表格单元格,并在TabBar控制器视图中显示有关表格单元格的更多详细信息。

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

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

 self.title = "Some Title Name"

但是在测试应用程序时,我的标题和按钮都会显示出来。当我使用上面的代码行时,它会更改您选中的选项卡的标题,而不是视图控制器的标题。

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

enter image description here

2 个答案:

答案 0 :(得分:2)

当您执行self.title = "Some title"时,您正在设置ViewController的标题,它正常工作,因为标签栏标题会更改。但这与导航栏的标题不同。

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

如果导航栏来自将视图控制器嵌入导航控制器,那么您可以执行self.navigationItem.title = "Some title"并且它可以正常工作。

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

@IBOutlet weak var navBar: UINavigationBar!

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

关于现在显示的导航栏,您是否尝试向其添加约束?

答案 1 :(得分:0)

以下是我用来解决这些问题的方法:

要显示标题:

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