Как изменить название кнопки на навигационном контроллере в swift3?

Я хочу изменить название откидывания на любое имя в swift 3. Я пробовал много способов, но никто из них не работал для меня.

self.navigationItem.backBarButtonItem?.title="Title" self.navigationController?.navigationItem.backBarButtonItem?.title="Title" 

Только для информации я написал ниже код в appdelegate.

 let backImage : UIImage = UIImage(named:"backArrow")! UINavigationBar.appearance().barTintColor = UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0) UINavigationBar.appearance().tintColor = UIColor.white UINavigationBar.appearance().backIndicatorImage = backImage UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImage UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white] UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, 0), for: .default) IQKeyboardManager.sharedManager().enable = true self.window?.backgroundColor = UIColor.white 

В Swift 3.0, помещенный ниже кода в метод appdelegate didFinishLaunchingWithOptions он отлично работал для меня

 let backImage = UIImage(named: "BackNavigation")?.withRenderingMode(.alwaysOriginal) UINavigationBar.appearance().backIndicatorImage = backImage UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImage UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -80.0), for: .default) 

Последняя строка удалит заголовок Navigation Back Button если вы не хотите удалять заголовок, а затем просто комментируете его

Вам нужно будет установить свойство backBarButtonItem объекта navigationItem с viewController вы выталкиваете упомянутый viewController .

self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.plain, target: nil, action: nil)

Однако вы должны установить это для каждого viewController .

Имя кнопки обратной ссылки навигационного элемента будет таким же, как заголовок предыдущего контроллера представления, который подталкивает его в стек навигации 🙂

Поэтому, если VC A нажимает VC B, кнопка возврата в VC B будет равна A.

Итак, все, что вы можете сделать, это изменить заголовок предыдущего viewController перед тем, как нажать новый viewController с помощью кода 🙂

 self.navigationItem.title = "ABCD" 

И в ViewWillAppear of VC A вы можете вернуть название обратно в то, что было раньше 🙂

 self.navigationItem.title = "Back to xyz" 

Все сказанное, если вы не хотите весь этот цирк :), вы можете просто скрыть кнопку возврата по умолчанию, используя,

 self.navigationItem.hidesBackButton = true 

в вашем VC B, создайте элемент UIBarButton, установите любой заголовок, который вы хотите установить, а затем установите его как leftBarButtonItem :),

 self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: NSLocalizedString("ABCD", comment: "ABCD"), style: .plain, target: self, action:#selector(self.abcdTapped:) 

конечно, теперь, когда не будет отображаться значок «<» 🙂 Теперь, если вы этого хотите, вы можете добавить его в качестве изображения на кнопку «Назад», но его громоздкость 🙂

Надеюсь, поможет 🙂

Попробуйте выполнить следующие действия, чтобы установить изображение на кнопку «Назад».

Вывод:

введите описание изображения здесь

Шаг 1:

Добавьте следующий код в свой AppDelegate

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. var backButtonImage = UIImage(named: "Your Image Name") backButtonImage = backButtonImage?.stretchableImage(withLeftCapWidth: 0, topCapHeight: 0) UIBarButtonItem.appearance().setBackButtonBackgroundImage(backButtonImage, for: .normal, barMetrics: .default) UINavigationBar.appearance().barTintColor = UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0) UINavigationBar.appearance().tintColor = UIColor.white return true } 

Шаг 2:

Добавьте следующий код в свой MainVC

 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. title = "Title 1" navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white, NSFontAttributeName:UIFont(name:"HelveticaNeue", size: 20)!] } 

Шаг 3:

Добавьте следующий код в свой DestVC или 2ndVC

 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. title = "Title 2" navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white, NSFontAttributeName:UIFont(name:"HelveticaNeue", size: 20)!] } 

Шаг 4:

Выберите свой навигационный блок из вашего StoryBoard и goto Attribute Inspector . В разделе «Изменение элемента навигации» имя вашей кнопки « Назад» введите пустое пространство или программно создайте кнопку «Назад» с простым названием.

введите описание изображения здесь

Шаг 5:

Добавьте изображение значка в свои активы. 1x29pt , 2x58pt и 3x87pt . Я не уверен в размере образа ресурса. Проверите с apple doc о классе размера.

введите описание изображения здесь


Обновить:

Мой похожий ответ, связанный с этим сообщением.

Как настроить символ обратной навигации и текст навигации?

  • Как изменить имя кнопки обратной связи UINavigationController?
  • iOS: обратный вызов prepareForSegue для другого направления (например, нажата кнопка «Назад»)
  • UITabBarController UISplitViewController скрываетBottomBarWhenPushed
  • Переопределить UINavigationController UINavigationTransitionView clipToBounds
  • Скрыть или отключить кнопку «Назад» в конечном окне приложения на основе навигационного контроллера
  • Как изменить цвет заголовка Цвет навигацииКонтроллер в iOS с использованием Xamarin
  • Как создать UINavigationController типа Tinder?
  • Переход к корневому контроллеру навигации - Swift 3
  • Размер Popover с помощью UINavigationController в раскадровке
  • iOS: настройка позиции заголовка UINavgationBar
  • Удаление диспетчеров просмотра из стека навигации
  • Interesting Posts
    Давайте будем гением компьютера.