如何在 Swift 中设置导航栏的标题? [复制]

Posted

技术标签:

【中文标题】如何在 Swift 中设置导航栏的标题? [复制]【英文标题】:How to set title of Navigation Bar in Swift? [duplicate] 【发布时间】:2015-11-14 10:41:27 【问题描述】:

我正在尝试在 Swift 中设置 Navigation Bar 的标题,我设置了 Tab BarNavigation Bar 什么都没有显示,没有按钮,没有标题,什么都没有。我使用了一些代码,但在我使用 Tab Bar 时它不起作用,当我删除 Tab Bar 时,代码正常工作,Navigation Bar 一切正常,标题显示,按钮显示。

我用于标题的代码是:

override func viewDidLoad() 
    super.viewDidLoad()

    self.navigationItem.title = "My Title"


Main.storyboard 中,我将Navigation ControllerTab Bar Controller 连接起来,如图所示。

那么,如何解决这个问题?问题是Navigation Bar 在使用Tab Bar 时不起作用。

【问题讨论】:

您的导航控制器和标签栏控制器的方式错误。标签栏应该是根。然后每个选项卡都应该有一个导航控制器。这将为您提供标签栏附带的标准控件,并且设置标题会更容易。 当组合标签栏控制器和导航控制器时,根控制器应该是一个标签栏控制器,每个标签应该有自己的导航控制器。见***.com/a/26153273/1630618 【参考方案1】:

由于Tab Bar 实际上是Navigation BarRoot View Controller,因此您需要在viewWillAppear 函数中设置UITabBarControllertitle,以便每次切换标签时都会发生这种情况:

override func viewWillAppear(animated: Bool) 
    super.viewWillAppear(animated)
    self.tabBarController?.navigationItem.title = "My Title"
    self.tabBarController?.navigationItem.leftBarButtonItem = settingsButton //This is the IBOutlet variable that you previously added

但更好的方法实际上是反过来,就像这样

您应该为UITabBarController 的每个子代连接一个UINavigationController,因为它在语义上更正确,并且更易于维护。

【讨论】:

按钮呢? 为每个按钮创建一个IBOutlet,并使用我将要更新我的答案的代码 @EminEmini 但实际的问题是,从技术上讲,您应该在UITabBarController 中使用UINavigationController,而不是相反 @EminEmini 我修好了。请参阅我的更新答案。 @EminEmini 没问题 :) 顺便说一句,我建议使用第二个,因为它更容易使用【参考方案2】:

您的问题不清楚,如果您提供的代码来自 UIViewController 并显示在 UINavigationControllernavigationBar 中,您可以简单地使用:

override func viewDidLoad() 
    super.viewDidLoad()
    self.title = "My Title"

【讨论】:

【参考方案3】:

UINavigationController 类参考中,Apple 写道:

init(rootViewController: UIViewController) 参数 根视图控制器 位于导航堆栈底部的视图控制器。此对象不能是 UITabBarController 类的实例。

如果你坚持也可以。但是在这种情况下,你的tabbarController的ViewControllers都共享相同的标题,也就是tabbarController的标题。

一个更好的方法是给每个 tabbarController 的 viewControllers 一个 NavigationViewController。

【讨论】:

以上是关于如何在 Swift 中设置导航栏的标题? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift iOS 8 中设置透明导航栏和状态栏的图像底图

在 Swift 的导航栏中设置图像

在 Appdelegate 中设置后如何更改导航栏的色调?

在 AppDelegate 中设置 UIButton 外观时如何更改 SafariViewController 中导航栏的色调

如何在 iOS 7 中设置导航栏的色调颜色

如何在 Swift 的搜索栏中设置动画?