change bar ios uinavigationcontroller title back-button

ios - bar - swift 4 change back button text



Cambiar UINavigationBar título del botón atrás (9)

En mi aplicación, quiero utilizar el texto ''Atrás'' como título del botón de retroceso para cada controlador de vista. He leído tantas publicaciones en stackoverflow pero no obtuve nada.

No quiero configurar el botón de la barra izquierda.

¿Alguien puede ayudarme en esta simple tarea?

Gracias,


Haga esto en el controlador de vista principal no en el secundario

Rápido

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

Objetivo-C

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];


Necesitaba usar self.navigationController.navigationBar.backItem.title = @""; , la diferencia es que estoy usando backItem lugar de topItem .


Para eliminar el título del botón Atrás para todos los controles de vista, agregue un nuevo archivo rápido y copie esta extinción a él

import UIKit extension UIViewController { static func swizzle(){ let orginalSelector = #selector(viewDidLoad) let swizzledSelector = #selector(swizzledViewDidLoad) let orginalMethod = class_getInstanceMethod(UIViewController.self, orginalSelector) let swizzledMethod = class_getInstanceMethod(UIViewController.self, #selector(swizzledViewDidLoad)) let didAddMethod = class_addMethod(UIViewController.self, orginalSelector, method_getImplementation(swizzledMethod!), method_getTypeEncoding(swizzledMethod!)) if didAddMethod { class_replaceMethod(UIViewController.self, swizzledSelector, method_getImplementation(orginalMethod!), method_getTypeEncoding(orginalMethod!)) }else{ method_exchangeImplementations(orginalMethod!, swizzledMethod!) } } @objc func swizzledViewDidLoad(){ navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil) swizzledViewDidLoad() } }

después de eso, en AppDelegate dentro de didFinishLaunchingWithOptions, llama al func swizzle.

UIViewController.swizzle()

este func usa el tiempo de ejecución objetivo para intercambiar el método viewDidLoad por otro que elimina el título del botón de retroceso y luego dentro de él recuperar el viewDidLoad original


Prueba esta esperanza sera trabajo

UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithTitle:@"New Title" style:UIBarButtonItemStyleBordered target:nil action:nil]; [[self navigationItem] setBackBarButtonItem:btn];


Si está utilizando el guión gráfico, puede seleccionar el elemento de navegación en el controlador de vista principal y establecer el texto del botón que desea en el campo " Botón de retroceso ". Recuerde configurar esto en el controlador de vista principal , no en el elemento secundario que se inserta.


en AppDelegate en DidFinishLaunchingWithOptions agregue este código:

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-1000.0, 0.0) forBarMetrics:UIBarMetricsDefault];


Swift 2.0:

override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationController?.navigationBar.topItem?.title = "" }

Nota: Solo funciona si el guión gráfico tiene una cadena de pila de navegación.

Otras opciones / cambio de título:

self.navigationController?.navigationBar.backItem?.title = "" navigationItem.backBarButtonItem?.title = "" navigationItem.leftBarButtonItem?.title = ""

Eliminando navigationItem:

navigationItem.setLeftBarButtonItem(nil, animated: true)


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


self.navigationController.navigationBar.topItem.title = @"";