Ребят хочу убрать текст с кнопки Назад. Я использую этот код для перехода от VC1 к VS2 (форма входа). Я попытался добавить этот код в VC2, но ничего не сделал.
self.navigationController?.navigationBar.backItem?.title = ""
код:
@IBAction func didSelectSegment(_ sender: UISegmentedControl) {
let vcName = vcNames[sender.selectedSegmentIndex]
if vcName == "NQTPastRecordViewController" && loggined() == false {
let alert = alertAskLogin({
let signInVC = getController("EVSignInViewController")
self.navigationController?.pushViewController(signInVC, animated: true)
})
self.present(alert, animated: true, completion: nil)
segmentControll.selectedSegmentIndex = 0
return
}
self.container.swipeToController(at: sender.selectedSegmentIndex)
}





Есть несколько способов добиться того, чего вы хотите.
Когда вы помещаете контроллер представления (VC2) в стек навигации для первого контроллера (VC1), кнопка «Назад» по умолчанию использует заголовок первого экрана в качестве заголовка кнопки «Назад», когда отображается второй экран.
Итак, в VC1 вы можете установить заголовок контроллера представления в пустую строку, прежде чем вставлять в стек
override func viewDidLoad() {
super.viewDidLoad()
self.title = ""
}
и это оставит вас с кнопкой возврата, на которой есть только символ '<'.
Второй метод - установить пользовательский элемент кнопки задней панели в родительском контроллере представления (VC1).
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: nil, action: nil)
}
который устанавливает заголовок кнопки возврата на то, что вы установили в поле заголовка UIBarButtonItem.
Таким образом, ваша реализация может выглядеть примерно так: (выберите тот или иной вариант в комментариях, если вы оба сделаете так, чтобы пользовательский элемент кнопки панели переопределял заголовок.)
@IBAction func didSelectSegment(_ sender: UISegmentedControl) {
let vcName = vcNames[sender.selectedSegmentIndex]
if vcName == "NQTPastRecordViewController" && loggined() == false {
let alert = alertAskLogin({
let signInVC = getController("EVSignInViewController")
// set title to empty string here
title = ""
// or set a custom back bar button item and set target/action as needed
navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: nil, action: nil)
navigationController?.pushViewController(signInVC, animated: true)
})
self.present(alert, animated: true, completion: nil)
segmentControll.selectedSegmentIndex = 0
return
}
container.swipeToController(at: sender.selectedSegmentIndex)
}
Текст кнопки "Назад" - это заголовок предыдущего ViewController.
Я предлагаю вам изменить предыдущий заголовок ViewController в методе viewDidDisapear.
let button1 = UIBarButtonItem(image: UIImage(named: "backImage"), style: .plain, target: self, action: Selector("action"))
//action:#selector(Class.MethodName) for swift 4
self.navigationItem.rightBarButtonItem = button1
Вы можете использовать изображение для кнопки возврата, если хотите, или вы можете установить заголовок равным нулю для UIBarButtonItem
navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
В построителе интерфейса вы можете выбрать элемент навигации предыдущего контроллера и изменить строку кнопки «Назад» на то, как вы хотите, чтобы кнопка «Назад» отображалась как. Например, если вы хотите, чтобы он был пустым, просто поставьте пробел.
Вы также можете изменить его с помощью этой строки кода:
[self.navigationItem.backBarButtonItem setTitle:@"Title here"];
Или в Swift:
self.navigationItem.backBarButtonItem?.title = ""
и чтобы удалить текст кнопки «Назад» из всего приложения, используйте это: (Swift)
var navBarButtonAppearance = UIBarButtonItem.appearanceWhenContained(in: UINavigationBar.self, nil)
navBarButtonAppearance.setTitleTextAttributes([NSAttributedStringKey.font: UIFont.systemFont(ofSize: 0.1), NSAttributedStringKey.foregroundColor: UIColor.clear], for: .normal)