Как установить текст кнопки в Swift
Как удалить текст кнопки назад.
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
Ответы
Ответ 1
Кнопка "Назад" относится к контроллеру просмотра предыдущей, а не той, которая в настоящее время отображается на экране.
Чтобы изменить кнопку "Назад", вы должны обновить ее нажатием до, на контроллере представления, который инициировал сеанс:
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
}
Ответ 2
Вы можете сделать это из конструктора интерфейса следующим образом:
щелкните элемент навигации предыдущего контроллера просмотра
![введите описание изображения здесь]()
из инспектора атрибутов установите текст кнопки "Назад" на все, что вы хотите. Вот оно!
![введите описание изображения здесь]()
Ответ 3
Текст обратной кнопки берется из заголовка элемента управления родительским представлением. Таким образом, все, что вы указали в предыдущем заголовке элемента управления View-Control, будет отображаться в тексте текущей кнопки контроллера.
Вы можете просто поместить "" в качестве заголовка навигационного элемента в виде родительского вида viewWillAppear.
self.navigationItem.title = ""
Другой способ - поставить
self.navigationController?.navigationBar.topItem?.title = ""
в режиме просмотра текущего вида viewWillAppear. Это вызовет некоторые другие проблемы, если навигационный стек слишком вложен.
Ответ 4
Если вы используете 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
}
}
Результат будет:
![введите описание изображения здесь]()
Ответ 5
Я не знаю, где вы использовали свои методы, которые вы задали, но я мог бы получить желаемый результат, если я использую в своем классе ViewController
(в котором я хочу изменить кнопку "Назад" ), на viewDidLoad()
, следующая строка:
self.navigationController?.navigationBar.backItem?.title = "Anything Else"
Результат будет:
До
![введите описание изображения здесь]()
После
![введите описание изображения здесь]()
Ответ 6
Вы можете поместить эти 3 строки кода в свой override func viewDidLoad() {}
.
let backButton = UIBarButtonItem()
backButton.title = "name"
self.navigationController!.navigationBar.topItem!.backBarButtonItem = backButton
Ответ 7
Кнопка "Назад" принадлежит предыдущему контроллеру представления, а не тому, который в данный момент представлен на экране. Чтобы изменить кнопку "Назад", вы должны обновить ее перед нажатием, добавить viewdidload:
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: self, action: nil)
Ответ 8
Вы можете просто изменить NavigationItem в раскадровке
![enter image description here]()
В кнопку "Назад" добавьте пробел и нажмите Enter.
Примечание: сделайте это в предыдущем ВК.
Ответ 9
Это должно работать:
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, а также убирает стрелку назад и жест смахивания.
Ответ 10
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)
Ответ 11
В viewDidLoad
методе представляющего контроллера добавьте:
// hide navigation bar title in the next controller
let backButton = UIBarButtonItem(title: "", style:.Plain, target: nil, action: nil)
navigationItem.backBarButtonItem = backButton
Ответ 12
Попробуй... это сработает....
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
self.title = ""
}
Приведенный выше код скроет текст и отобразит только стрелку назад на панели навигации.
Ответ 13
Использование 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
Ответ 14
Это потому, что вы должны сделать это в prepareForSegue вашего родителя viewController:
это должно сделать трюк:
// MARK: - Navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
navigationItem.title = "AnythingYouWant :)"
}
Приветствия
Ответ 15
Установить self.title = ""
до self.navigationController?.pushViewController(vc, animated: true)
.
Ответ 16
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
Ответ 17
Если вы нажимаете контроллер просмотра со страницы просмотра страницы, вы не можете обновить заголовок кнопки управления навигационным контроллером. Чтобы решить эту проблему, создайте делегата обратно в родительский контроллер представления (вы также сможете переходить к иерархии диспетчера представлений вплоть до родителя).
Кроме того, кнопки "Назад" имеют ограничение символов. Если вы превысите этот предел символа, система по умолчанию будет "Назад". Это не урезает вас. Например:
backItem.title = "Birthdays/Anniversaries" // Get converted to "Back".
backItem.title = "Birthdays/Anniversa…" // Fits and shows as is.
Ответ 18
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)
Ответ 19
хотя эти ответы решают проблему, но это может быть полезным
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)
}
}
Ответ 20
Свифт 4
есть только один способ изменить текст в backButton программно из текущего viewController:
navigationController?.navigationBar.items![0].title = "some new text"