以编程方式更改导航标题

Ris*_*ing 171 title uinavigationbar swift

我有一个带标题的导航栏.当我双击文本来重命名它时,它实际上说它是一个导航项,所以可能就是这样.

我正在尝试使用代码更改文本,例如:

declare navigation bar as navagationbar here
button stuff {
    navigationbar.text = "title"
}
Run Code Online (Sandbox Code Playgroud)

那显然不是我的代码,只是展示它是如何工作的.

因此,每当我按下按钮,我都希望标题发生变化.

dre*_*wag 490

您可以通过更改正在显示的视图控制器的标题来更改标题:

viewController.title = "some title"
Run Code Online (Sandbox Code Playgroud)

通常这是在视图中完成视图控制器上的加载:

override func viewDidLoad() {
    super.viewDidLoad()
    self.title = "some title"
}
Run Code Online (Sandbox Code Playgroud)

但是,这仅在您将视图控制器嵌入UINavigationController中时才有效.我强烈建议您这样做而不是自己创建导航栏.如果您坚持自己创建导航栏,可以通过执行以下操作来更改标题:

navigationBar.topItem.title = "some title"
Run Code Online (Sandbox Code Playgroud)

  • 警告:`self.title = "some title"` 将更改导航栏标题和选项卡栏项目标题。 (3认同)
  • 你不要直接在课堂上调用它.您可以在UIViewController的子类的实例上调用它 (2认同)
  • 谢谢.navigationBar.topItem.title有效. (2认同)

Avi*_*Avi 60

请尝试以下内容 viewDidLoad

self.navigationItem.title = "Your Title"
Run Code Online (Sandbox Code Playgroud)


小智 12

以下代码适用于Xcode 7:

override func viewDidLoad() {        
    super.viewDidLoad()
    self.navigationItem.title = "Your Title"
}
Run Code Online (Sandbox Code Playgroud)


AJ9*_*AJ9 10

我发现这个工作:

navigationItem.title = "Title"
Run Code Online (Sandbox Code Playgroud)


Mar*_*hex 10

斯威夫特 5.1

override func viewDidLoad() {
    super.viewDidLoad()
    navigationItem.title = "What ever you want"
}
Run Code Online (Sandbox Code Playgroud)


rus*_*net 7

如果您有一个NavigationController嵌入的内部,TabBarController请参阅下面的内容:

super.tabBarController?.title = "foobar"
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

您可以使用调试器脚本来调试此类问题。尝试Chisel 的 pvc命令来打印层次结构上的每个可见/隐藏视图。


Kev*_*ngh 6

人的正确答案是

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.title = "Your Text"
}
Run Code Online (Sandbox Code Playgroud)


cod*_*ded 5

通常,最佳实践是在UIViewController. 通过这样做,UINavigationItem也设置了。UINavigationBar一般来说,这比以编程方式分配和初始化未链接到任何东西的更好。

您会错过一些UINavigationBar设计目的的好处和功能。这是可能对您有帮助的文档链接。它讨论了您可以在实际栏和 上设置的不同属性UINavigationItem

请记住:

  1. 您将失去后退按钮功能(除非您自己接线)
  2. 内置的“从左侧拖动向后滑动”手势被放弃

UINavigationController是你的朋友。


Ale*_*nko 5

如果您尝试Navigation Bar手动创建此代码将帮助您

func setNavBarToTheView() {
    let navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 64.0))
    self.view.addSubview(navBar);
    let navItem = UINavigationItem(title: "Camera");
    let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.cancel, target: self, action: #selector(CameraViewController.onClickBack));
    navItem.leftBarButtonItem = doneItem;
    navBar.setItems([navItem], animated: true);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您想更改嵌入导航控制器中的页面视图控制器的子视图控制器的标题,它将如下所示:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.parent?.title = "some title"
}
Run Code Online (Sandbox Code Playgroud)