ios objective-c swift

ios - Cómo configurar el texto del botón de retroceso en Swift



objective-c (21)

¿Cómo se elimina el texto del botón de retroceso?

current back button: <Back desired back button: <AnythingElse

Ninguno de estos ha funcionado:

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


El botón Atrás pertenece al controlador de vista anterior , no el que se presenta actualmente en la pantalla.
Para modificar el botón de retroceso, debe actualizarlo antes de presionar, en el controlador de vista que inició el seguimiento:

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 }


El botón Atrás pertenece al controlador de vista anterior, no el que se presenta actualmente en la pantalla. Para modificar el botón Atrás, debe actualizarlo antes de presionar, agregue viewdidload:

Swift 4:

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


El texto del botón de retroceso se toma del título del elemento de navegación del controlador de vista principal. Entonces, lo que establezca en el título del elemento de navegación del controlador de vista anterior, se mostrará en el texto del botón de retroceso del controlador de vista actual. Simplemente puede poner "" como título del elemento de navegación en el método viewWillAppear del controlador de vista principal.

self.navigationItem.title = ""

Otra forma es poner

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

en el método actual viewWillAppear del controlador de vista. Este causará algún otro problema si la pila de navegación está demasiado anidada.


En el método viewDidLoad del controlador de presentación, agregue:

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


Establezca self.title = "" antes de self.navigationController?.pushViewController(vc, animated: true) .


Esto debería funcionar:

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) }

Aunque no se recomienda ya que esto realmente reemplaza el botón BackButton y también elimina la flecha hacia atrás y el gesto de deslizar.


No sé dónde usó los métodos que puso en su pregunta, pero podría obtener el resultado deseado si lo uso, en mi clase ViewController (en la que quiero cambiar el botón Atrás), en la función viewDidLoad() , el línea siguiente:

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

El resultado será:

antes de

Después


Prueba esto ... funcionará ...

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

El código anterior ocultará el texto y mostrará solo la flecha hacia atrás en la barra de navegación.


Puede hacerlo desde el generador de interfaces de la siguiente manera:

haga clic en el elemento de navegación del controlador de vista anterior

desde el inspector de atributos configure el texto del botón de retroceso a lo que desee. ¡¡Eso es!!


Puede poner esta línea de código 3 en su override func viewDidLoad() {} .

let backButton = UIBarButtonItem() backButton.title = "name" self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton


Si está presionando un controlador de vista desde la página del controlador de vista de página, no puede actualizar el título del botón de retroceso del controlador de navegación. Para resolver esto, cree un delegado nuevamente en su controlador de vista principal (también puede atravesar la jerarquía del controlador de vista hasta el padre).

Además, los botones Atrás tienen un límite de caracteres. Si excede ese límite de caracteres, el sistema pasará por defecto a "Atrás". No se truncará por ti. Por ejemplo:

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


Si está utilizando el archivo xib para el controlador de vista, haga esto en su clase de controlador de vista.

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 } }

El resultado será:


Simplemente puede modificar el elemento de navegación en el guión gráfico

En el botón Atrás, agregue un espacio y presione Entrar.

Nota: Haga esto en el VC anterior.


aunque estas respuestas solucionan el problema, pero esto podría ser útil

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) } }


Swift 4 : configure el botón Atrás antes de presionar cualquier controlador de vista

// 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)


Swift 4

En mi caso, la solución fue borrar el elemento de navegación del Master View Controller antes de pasar al Child View Controller. Y configúrelo nuevamente si se muestra nuevamente

MasterController

override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) navigationItem.title = "Master Title" } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) navigationItem.title = "" }

Y así es como presiono un UIViewController y borro el elemento del botón de la barra posterior en el controlador secundario:

MasterController

let childController = ChildController(collectionViewLayout: UICollectionViewFlowLayout()) childController.navigationItem.backBarButtonItem?.title = "" navigationController?.pushViewController(childController, animated: true)


Swift 4

Si bien el dicho anterior para prepararse para la segue es correcto y es cierto, el botón Atrás pertenece al VC anterior, solo agrega un montón de código innecesario.

Lo mejor que puede hacer es establecer el título del VC actual en viewDidLoad y automáticamente establecerá el título del botón Atrás correctamente en el próximo VC. Esta línea me funcionó

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


Swift 4.2

Si desea cambiar el texto del elemento del botón de retroceso de la barra de navegación, viewDidLoad en viewDidLoad del controlador ANTES del que muestra el botón de retroceso, NO en el controlador de vista donde está visible el botón de retroceso.

let backButton = UIBarButtonItem() backButton.title = "New Back Button Text" self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton

Si desea cambiar el texto del título de la barra de navegación actual, use el código a continuación (tenga en cuenta que este se convierte en el texto posterior predeterminado para la vista SIGUIENTE introducida en el controlador de navegación, pero el código anterior puede anular este texto posterior predeterminado)

self.title = "Navigation Bar Title"


para Swift 4.2

let backItem = UIBarButtonItem() backItem.title = "" navigationItem.backBarButtonItem = backItem


rápido 4

solo hay una forma de cambiar el texto en backButton mediante programación desde viewController actual:

navigationController?.navigationBar.items![0].title = "some new text"


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 }

¡¡Espero eso ayude!! #swift 3