以编程方式更改导航标题

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

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

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

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

所以每当我按下button,我想标题改变。

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

 viewController.title = "some title" 

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

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

但是,这只有在您的视图控制器embedded到UINavigationController中时才有效。 我强烈build议你这样做,而不是自己创build一个导航栏。 如果您坚持自己创build导航栏,则可以通过执行以下操作更改标题:

 navigationBar.topItem.title = "some title" 

尝试在viewDidLoad下面

  self.navigationItem.title = "YourTitle" 

下面的Xcode 7适合我:

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

通常,最好的做法是在UIViewController上设置标题。 通过这样做, UINavigationItem也被设置。 通常,这比编程分配和初始化一个没有链接到任何东西的UINavigationBar要好。

你错过了一些UINavigationBardevise的好处和function。 这是一个链接到文件,可以帮助你。 它讨论了您可以在实际栏和UINavigationItem上设置的不同属性。

请记住:

  1. 你失去了button的function(除非你自己连线)
  2. 内置的“从左侧拖动到后退”手势被取消

UINavigationController是你的朋友。

我发现这个工作:

 navigationItem.title = "Title" 

并且如果您尝试手动创buildNavigation 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); } 

Swift 3

我为故事板中的导航栏(来自对象浏览器)附带的导航标题栏项目创build了一个出口。 然后我起诉了下面这行:

 navigationBarTitleItem.title = "Hello Bar" 

使用swift4的人的正确答案是

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