Автоматическое изменение названия навигации
У меня есть панель навигации с заголовком.
Когда я дважды щелкаю текст, чтобы переименовать его, он фактически говорит, что это элемент навигации, так что может быть так.
Я пытаюсь изменить текст с помощью кода, например:
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
Правильный ответ для людей, использующих swift4 будет
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"
}
Я надеюсь, что это помогает, привет!