it-swarm.com.ru

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

Кнопка «Назад» принадлежит контроллеру предыдущий , а не тому, который в данный момент представлен на экране.
Чтобы изменить кнопку «назад», вы должны обновить ее перед нажатием на контроллере вида, который инициировал переход:

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
}

Свифт 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
}
507
Yariv

Вы можете сделать это из конструктора интерфейса следующим образом:

нажмите на элемент навигации предыдущего контроллера представления

 enter image description here

из инспектора атрибутов установите текст кнопки «Назад» на то, что вы хотите. Это оно!!

 enter image description here

104
Ajinkya Patil

Текст кнопки «Назад» берется из заголовка элемента навигации родительского view-контроллера. Поэтому все, что вы установили в заголовке элемента навигации предыдущего view-контроллера, будет отображаться в тексте кнопки текущего контроллера текущего представления. Вы можете просто поставить "" в качестве заголовка элемента навигации в методе viewWillAppear родительского контроллера представления.

self.navigationItem.title = ""

Другой способ поставить 

self.navigationController?.navigationBar.topItem?.title = ""

в текущем представлении контроллера viewWillAppear метод. Это вызовет другую проблему, если стек навигации слишком вложен.

34
minhazur

Если вы используете файл 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
}

}

Результатом будет:

 enter image description here

26
mustaq

Я не знаю, где вы использовали свои методы, которые вы задали для своего вопроса, но я мог бы получить желаемый результат, если бы использовал в своем классе ViewController (в котором я хочу изменить кнопку возврата) функцию viewDidLoad(), следующую строку :

self.navigationController?.navigationBar.backItem?.title = "Anything Else"

Результатом будет:

До

 enter image description here

После

 enter image description here

26
Francisco Romero

Вы можете поместить эти 3 строки кода в свою функцию override func viewDidLoad() {}.

let backButton = UIBarButtonItem()

backButton.title = "name"

self.navigationController!.navigationBar.topItem!.backBarButtonItem = backButton
23
Hitesh Chauhan

Кнопка «Назад» принадлежит предыдущему контроллеру представления, а не тому, который в данный момент представлен на экране . Чтобы изменить кнопку «Назад», вы должны обновить ее перед нажатием, добавьте viewdidload:

self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: self, action: nil)
17
Mohammad Razipour

Вы можете просто изменить NavigationItem в раскадровке

 enter image description here

В кнопку «Назад» добавьте пробел и нажмите Enter.

Примечание: сделайте это в предыдущем ВК.

9
xhinoda

Это должно работать:

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, а также убирает стрелку назад и жест смахивания.

8
Dejan Skledar

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)
6
budidino

В методе viewDidLoad представления контроллера add:

// hide navigation bar title in the next controller
let backButton = UIBarButtonItem(title: "", style:.Plain, target: nil, action: nil)
navigationItem.backBarButtonItem = backButton
3
Claus

Использование 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

3
ikbal

хотя эти ответы решают проблему, но это может быть полезным 

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)

    }

}
1
Ahmad Labeeb

Swift 4

В то время как предыдущая поговорка «подготовиться к переходу» верна и верна, кнопка «Назад» принадлежит предыдущему VC, она просто добавляет кучу ненужного кода.

Лучше всего установить заголовок текущего VC в viewDidLoad, и он автоматически установит заголовок кнопки назад на следующем VC. Эта линия работала для меня

navigationController?.navigationBar.topItem?.title = "Title"
1
Joel

Попробуйте это ... это будет работать ....

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    self.title = ""
}

Приведенный выше код скроет текст и покажет только стрелку назад на панели навигации.

1
Sarabjit Singh
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

0
Gurunathan

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

Кроме того, кнопки «Назад» имеют ограничение на количество символов. Если вы превысите этот лимит символов, система по умолчанию будет «Назад». Это не будет усекать для вас. Например:

backItem.title = "Birthdays/Anniversaries" // Get's converted to "Back".
backItem.title = "Birthdays/Anniversa…" // Fits and shows as is.
0
Justin Domnitz

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)
0
Jorge Casariego

Установите self.title = "" Перед self.navigationController?.pushViewController(vc, animated: true).

0
米米米

для Swift 4.2

let backItem = UIBarButtonItem()
backItem.title = ""
navigationItem.backBarButtonItem = backItem
0
Iryna Batvina