Автоматическое изменение названия навигации

У меня есть панель навигации с заголовком. Когда я дважды щелкаю текст, чтобы переименовать его, он фактически говорит, что это элемент навигации, так что может быть так.

Я пытаюсь изменить текст с помощью кода, например:

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

Это не мой код, очевидно, просто показывая, как он будет работать.

Поэтому всякий раз, когда я нажимаю кнопку, я хочу, чтобы название менялось.

Ответ 1

Вы меняете заголовок, меняя title отображаемого контроллера:

viewController.title = "some title"

Обычно это делается с учетом загрузки на контроллере представления:

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

Однако это работает, только если у вас есть контроллер просмотра, встроенный в UINavigationController. Я высоко рекомендую сделать это, а не создавать навигационную панель самостоятельно. Если вы настаиваете на создании панели навигации самостоятельно, вы можете изменить заголовок, выполнив следующие действия:

navigationBar.topItem.title = "some title"

Ответ 2

Попробуйте следующее в viewDidLoad

self.navigationItem.title = "Your Title"

Ответ 3

Код ниже работает для меня с Xcode 7:

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

Ответ 4

Я нашел, что это работает:

navigationItem.title = "Title"

Ответ 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);
}

Ответ 6

Обычно наилучшей практикой является установка заголовка на UIViewController. При этом также устанавливается UINavigationItem. Как правило, это лучше, чем программно выделять и инициализировать UINavigationBar, которые не связаны ни с чем.

Вы пропустили некоторые преимущества и функциональные возможности, для которых был разработан UINavigationBar. Вот ссылка к документации, которая может вам помочь. В нем обсуждаются различные свойства, которые вы можете установить на фактическом баре и на UINavigationItem.

Просто имейте в виду:

  • Вы теряете функциональность кнопок (если вы не подключаете ее самостоятельно)
  • Встроенный жест "перетащить из левой стороны, чтобы оттянуть назад" был утрачен.

UINavigationController являются вашими друзьями.

Ответ 7

Swift 3

Я создал выход для элемента заголовка навигационной панели, который поставляется с панелью навигации (из обозревателя объектов) в раскадровке. Затем я подал в суд на следующую строку:

navigationBarTitleItem.title = "Hello Bar"

Ответ 8

Правильный ответ для людей, использующих будет

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

Ответ 9

Swift4

var titleName = "My_title"
navigationItem.title = titleName

Ответ 10

Если у вас есть NavigationController встроенный в TabBarController см. Ниже:

super.tabBarController?.title = "foobar"

enter image description here

Вы можете отлаживать подобные проблемы с помощью сценариев отладчика. Попробуйте команду Chisel pvc чтобы напечатать каждый видимый/скрытый вид в иерархии.

Ответ 11

Я предпочитаю использовать self.navigationItem.title= "Your Title Here" self.title= "Your Title Here" чтобы обеспечить заголовок на панели навигации, поскольку панель вкладок также использует self.title для изменения заголовка. Вы должны попробовать следующий код один раз.

Примечание: вызов жизненного цикла super view необходим перед тем, как что-либо делать.

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

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

Ответ 12

Если вы хотите изменить заголовок дочернего контроллера представления контроллера представления страницы, который встроен в контроллер навигации, он будет выглядеть следующим образом:

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

Ответ 13

В Swift 4:

Swift 4

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "Your title"
}

Я надеюсь, что это помогает, привет!