如何在 Swift 中设置导航栏的标题? [复制]
Posted
技术标签:
【中文标题】如何在 Swift 中设置导航栏的标题? [复制]【英文标题】:How to set title of Navigation Bar in Swift? [duplicate] 【发布时间】:2015-11-14 10:41:27 【问题描述】:我正在尝试在 Swift 中设置 Navigation Bar
的标题,我设置了 Tab Bar
和 Navigation Bar
什么都没有显示,没有按钮,没有标题,什么都没有。我使用了一些代码,但在我使用 Tab Bar
时它不起作用,当我删除 Tab Bar
时,代码正常工作,Navigation Bar
一切正常,标题显示,按钮显示。
我用于标题的代码是:
override func viewDidLoad()
super.viewDidLoad()
self.navigationItem.title = "My Title"
在Main.storyboard
中,我将Navigation Controller
与Tab Bar Controller
连接起来,如图所示。
那么,如何解决这个问题?问题是Navigation Bar
在使用Tab Bar
时不起作用。
【问题讨论】:
您的导航控制器和标签栏控制器的方式错误。标签栏应该是根。然后每个选项卡都应该有一个导航控制器。这将为您提供标签栏附带的标准控件,并且设置标题会更容易。 当组合标签栏控制器和导航控制器时,根控制器应该是一个标签栏控制器,每个标签应该有自己的导航控制器。见***.com/a/26153273/1630618 【参考方案1】:由于Tab Bar
实际上是Navigation Bar
的Root View Controller
,因此您需要在viewWillAppear
函数中设置UITabBarController
的title
,以便每次切换标签时都会发生这种情况:
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
并显示在 UINavigationController
和 navigationBar
中,您可以简单地使用:
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 中设置透明导航栏和状态栏的图像底图
在 AppDelegate 中设置 UIButton 外观时如何更改 SafariViewController 中导航栏的色调