我认为这是一件很简单的事情,但我的标题甚至出现了一些问题。我有一个TabBarController,它管理2个ViewControllers。 正在呈现tabBarController,从嵌入到导航控制器中的tableView查看show segue。我已经阅读了关于这是否正确的不同观点。对我来说,从UI视图来看似乎有意义。人员点击表格单元格,并在TabBar控制器视图中显示有关表格单元格的更多详细信息。
当我测试应用程序时,我根本看不到任何标题,即使我在故事板中添加了一个。我还在导航栏的右侧添加了一个导航按钮,它根本不显示。见附图。
设置标题我试图做这样的事情
self.title = "Some Title Name"
但是在测试应用程序时,我的标题和按钮都会显示出来。当我使用上面的代码行时,它会更改您选中的选项卡的标题,而不是视图控制器的标题。
这可能与tabBar是导航控制器的一部分有关,因此控制器是创建和填充标题栏的控制器,例如我可以看到的后退按钮。如果是这种情况,我可以在导航栏的右侧添加标题和按钮吗?
答案 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