Как установить текст кнопки в 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"