以编程方式更改导航标题

时间:2014-08-06 18:23:25

标签: swift uinavigationbar title

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

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

declare navigation bar as navagationbar here
button stuff {
    navigationbar.text = "title"
}

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

所以每当我按下按钮,我都想要改变标题。

15 个答案:

答案 0 :(得分:442)

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

viewController.title = "some title"

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

override func viewDidLoad() {
    super.viewDidLoad()
    self.title = "some title"
}

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

navigationBar.topItem.title = "some title"

答案 1 :(得分:54)

viewDidLoad

中尝试以下操作
self.navigationItem.title = "Your Title"

答案 2 :(得分:12)

以下代码适用于Xcode 7:

override func viewDidLoad() {        
    super.viewDidLoad()
    self.navigationItem.title = "Your Title"
}

答案 3 :(得分:10)

我发现这个有用:

navigationItem.title = "Title"

答案 4 :(得分:5)

如果您尝试手动创建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); } ,此代码也可以帮助您

titlefont=dict(
    color='rgb(148, 103, 189)'
),
tickfont=dict(
    color='rgb(148, 103, 189)'

答案 5 :(得分:4)

通常情况下,最佳做法是在UIViewController上设置标题。通过这样做,UINavigationItem也被设置。通常,这比以编程方式分配和初始化与任何内容无关的UINavigationBar更好。

您错过了UINavigationBar为其设计的一些优势和功能。 Here is a link可能对您有帮助的文档。它讨论了您可以在实际条形图和UINavigationItem上设置的不同属性。

请记住:

  1. 您丢失了按钮功能(除非您自己连接)
  2. 内置的“从左侧拖动以向后滑动”手势将被取消
  3. UINavigationController是你的朋友。

答案 6 :(得分:3)

Swift 3

我为故事板中导航栏(来自对象浏览器)附带的导航标题栏项创建了一个插座。然后我起诉了以下一行:

navigationBarTitleItem.title = "Hello Bar"

答案 7 :(得分:3)

使用的人的正确答案是

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.title = "Your Text"
}

答案 8 :(得分:0)

如果MAX(inserted_at)中嵌入了NavigationController,请参见下文:

TabBarController

enter image description here

您可以使用调试器脚本调试此类问题。尝试使用Chisel's super.tabBarController?.title = "foobar" 命令来打印层次结构上的每个可见/隐藏视图。

答案 9 :(得分:0)

相对于self.navigationItem.title = "Your Title Here",我更喜欢使用self.title = "Your Title Here"在导航栏中提供标题,因为标签栏也使用self.title来更改其标题。您应该一次尝试以下代码。

注意:在执行任何操作之前,必须调用超级视图生命周期。

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        setupNavBar()
    }
}

private func setupNavBar() {
    self.navigationItem.title = "Your Title Here"
}

答案 10 :(得分:0)

如果您想从嵌入在导航控制器中的Page View Controller的子视图控制器更改标题,则如下所示:

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

答案 11 :(得分:0)

Swift 5.1

ng.probe

答案 12 :(得分:0)

Swift 5.1

//以编程方式和动态方式设置NavigationBar标题

注意: 首先将NavigationControllerItem添加到您的 render() { if (this.props.isLoading) { return <LoaderExampleText />; } const laLoca1 = Drylocationlast.findOne({ codigo: "dl" }); const laLoca = Locaciones.findOne(laLoca1.dryLocationId); return (<MyMap laLoca={laLoca} />); } } export default withTracker(() => { const handles = [ Meteor.subscribe("wells"), Meteor.subscribe("locaciones"), Meteor.subscribe("Drylocationlast") ]; const isLoading = handles.some(handle => !handle.ready()); return { wells: Wells.find().fetch(), isLoading: isLoading }; })(WellHome); 中,然后转到其ViewController文件,然后将其复制并粘贴到ViewController.swift中。

viewDidLoad()

答案 13 :(得分:-1)

在Swift 4中:

快捷键4

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "Your title"
}

希望对您有帮助!

答案 14 :(得分:-1)

如果您尚未在视图控制器中创建导航栏,这将起作用。

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

如果您在视图控制器中创建了导航栏,这将很有帮助。

override func viewDidLoad() {
    super.viewDidLoad()
    navigationItem.title = "Title"
}