Как удалить текст кнопки назад.
current back button: <Back
desired back button: <AnythingElse
Ни один из них не работал:
self.navigationItem.backBarButtonItem?.title = "Back"
self.backItem?.title = ""
self.navigationController?.navigationBar.backItem?.title = ""
self.navigationItem.backBarButtonItem?.title = ""
self.navigationController?.navigationItem.backBarButtonItem?.title="Back"
self.navigationController?.navigationBar.backItem?.title = ""
self.navigationController?.navigationItem.backBarButtonItem?.title
Кнопка "Назад" относится к контроллеру просмотра предыдущей, а не той, которая в настоящее время отображается на экране.
Чтобы изменить кнопку "Назад", вы должны обновить ее нажатием до, на контроллере представления, который инициировал сеанс:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let backItem = UIBarButtonItem()
backItem.title = "Something Else"
navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed
}
Swift 3:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let backItem = UIBarButtonItem()
backItem.title = "Back"
navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed
}
Вы можете сделать это из конструктора интерфейса следующим образом:
щелкните элемент навигации предыдущего контроллера просмотра
из инспектора атрибутов установите текст кнопки "Назад" на все, что вы хотите. Вот оно!
Текст обратной кнопки берется из заголовка элемента управления родительским представлением. Таким образом, все, что вы указали в предыдущем заголовке элемента управления View-Control, будет отображаться в тексте текущей кнопки контроллера. Вы можете просто поместить "" в качестве заголовка навигационного элемента в виде родительского вида viewWillAppear.
self.navigationItem.title = ""
Другой способ - поставить
self.navigationController?.navigationBar.topItem?.title = ""
в режиме просмотра текущего вида viewWillAppear. Это вызовет некоторые другие проблемы, если навигационный стек слишком вложен.
Если вы используете xib файл для контроллера представлений, сделайте это в своем классе контроллера вида.
class AboutUsViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
edgesForExtendedLayout = []
setUpNavBar()
}
func setUpNavBar(){
//For title in navigation bar
self.navigationController?.view.backgroundColor = UIColor.white
self.navigationController?.view.tintColor = UIColor.orange
self.navigationItem.title = "About Us"
//For back button in navigation bar
let backButton = UIBarButtonItem()
backButton.title = "Back"
self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton
}
}
Результат будет:
Я не знаю, где вы использовали свои методы, которые вы задали, но я мог бы получить желаемый результат, если я использую в своем классе ViewController
(в котором я хочу изменить кнопку "Назад" ), на viewDidLoad()
, следующая строка:
self.navigationController?.navigationBar.backItem?.title = "Anything Else"
Результат будет:
До
После
navigationController.navigationBar.topItem?.title = ""
используйте navigationController.navigationBar.topItem?.title = ""
чтобы не помещать это в viewDidAppear
Вы можете поместить эти 3 строки кода в свой override func viewDidLoad() {}
.
let backButton = UIBarButtonItem()
backButton.title = "name"
self.navigationController!.navigationBar.topItem!.backBarButtonItem = backButton
Кнопка "Назад" принадлежит предыдущему контроллеру представления, а не тому, который в данный момент представлен на экране. Чтобы изменить кнопку "Назад", вы должны обновить ее перед нажатием, добавить viewdidload:
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: self, action: nil)
Вы можете просто изменить NavigationItem в раскадровке
В кнопку "Назад" добавьте пробел и нажмите Enter.
Примечание: сделайте это в предыдущем ВК.
Это должно работать:
override func viewDidLoad() {
super.viewDidLoad()
var button = UIBarButtonItem(title: "YourTitle", style: UIBarButtonItemStyle.Bordered, target: self, action: "goBack")
self.navigationItem.backBarButtonItem = button
}
func goBack()
{
self.navigationController?.popViewControllerAnimated(true)
}
Хотя это и не рекомендуется, поскольку фактически заменяет кнопку BackButton, а также убирает стрелку назад и жест смахивания.
Swift 4 - настройте кнопку возврата, прежде чем нажимать какие-либо контроллеры вида
// if you want to remove the text
navigationItem.backBarButtonItem = UIBarButtonItem()
// if you want to modify the text to "back"
navigationItem.backBarButtonItem = UIBarButtonItem(title: "back", style: .plain, target: nil, action: nil)
В viewDidLoad
методе представляющего контроллера добавьте:
// hide navigation bar title in the next controller
let backButton = UIBarButtonItem(title: "", style:.Plain, target: nil, action: nil)
navigationItem.backBarButtonItem = backButton
Использование Swift 4.2;
Если вы хотите изменить текст элемента кнопки обратной панели навигации (добавьте super.viewDidLoad())
let backButton = UIBarButtonItem()
backButton.title = "New Back Button Text"
self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton
Если вы хотите добавить текст заголовка панели навигации;
self.title = "Navigation Bar Title"
Self → ViewController
Попробуй... это сработает....
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
self.title = ""
}
Приведенный выше код скроет текст и отобразит только стрелку назад на панели навигации.
Свифт 4
есть только один способ изменить текст в backButton программно из текущего viewController:
navigationController?.navigationBar.items![0].title = "some new text"
хотя эти ответы решают проблему, но это может быть полезным
class MainNavigatioController: UINavigationController {
override func pushViewController(_ viewController: UIViewController, animated: Bool) {
// first
let backItem = UIBarButtonItem()
backItem.title = "رجوع"
self.viewControllers.last?.navigationItem.backBarButtonItem = backItem
// then
super.pushViewController(viewController, animated: animated)
}
}
Swift 4
В моем случае решение состояло в том, чтобы очистить элемент навигации Master View Controller, прежде чем переходить к Child View Controller. И установите его снова, если он будет показан снова
MasterController
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationItem.title = "Master Title"
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationItem.title = ""
}
И вот как я нажимаю UIViewController и очищаю элемент кнопки задней панели в дочернем контроллере:
MasterController
let childController = ChildController(collectionViewLayout: UICollectionViewFlowLayout())
childController.navigationItem.backBarButtonItem?.title = ""
navigationController?.pushViewController(childController, animated: true)
Если вы нажимаете контроллер просмотра со страницы просмотра страницы, вы не можете обновить заголовок кнопки управления навигационным контроллером. Чтобы решить эту проблему, создайте делегата обратно в родительский контроллер представления (вы также сможете переходить к иерархии диспетчера представлений вплоть до родителя).
Кроме того, кнопки "Назад" имеют ограничение символов. Если вы превысите этот предел символа, система по умолчанию будет "Назад". Это не урезает вас. Например:
backItem.title = "Birthdays/Anniversaries" // Get converted to "Back".
backItem.title = "Birthdays/Anniversa…" // Fits and shows as is.
override func viewWillAppear(_ animated: Bool) {
self.tabBarController?.navigationItem.title = "Notes"
let sendButton = UIBarButtonItem(title: "New", style: .plain, target: self, action: #selector(goToNoteEditorViewController))
self.tabBarController?.navigationItem.rightBarButtonItem = sendButton
}
func goToNoteEditorViewController(){
// action what you want
}
Надеюсь, это поможет! #swift 3
Установить self.title = ""
до self.navigationController?.pushViewController(vc, animated: true)
.
Это потому, что вы должны сделать это в prepareForSegue вашего родителя viewController:
это должно сделать трюк:
// MARK: - Navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
navigationItem.title = "AnythingYouWant :)"
}
Приветствия