uinavigationcontroller - Swift 5 - NavigationItem.title no se muestra

CorePress2024-01-25  8

Mi NavigationItem.title se comporta de una manera extraña.

Cuando se presiona el viewController para apilar, el título no se muestra (imagen superior). Sin embargo, mientras aparece viewController, el título se vuelve visible durante aproximadamente un nanosegundo (ver imagen inferior).

Así es como configuro el título y agrego los botones de barra. Todo en viewDidLoad.

navigationItem.title = "Mitt konto"
  
let backBtn = UIButton(type: .custom)
let backBtnImage = UIImage(systemName: "chevron.left")
backBtn.setBackgroundImage(backBtnImage, for: .normal)
backBtn.addTarget(self, action: #selector(popViewController), for: .touchUpInside)
backBtn.frame = CGRect(x: 0, y: 0, width: 20, height: 20)

let backBtnView = UIView(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
backBtnView.bounds = view.bounds.offsetBy(dx: 0, dy: -10)
backBtnView.addSubview(backBtn)
let backButton = UIBarButtonItem(customView: backBtnView)
navigationItem.leftBarButtonItem = backButton
    
let signOutImage = UIImage(named: "signout_item")?.withTintColor(.white)
let button = UIButton(frame: CGRect(x: 0,y: 0,width: 20, height: 20))
button.setBackgroundImage(signOutImage, for: .normal)
button.addTarget(self, action: #selector(signoutButtonPressed(_:)), for: .touchUpInside)
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button)

ACTUALIZACIÓN Mi jerarquía de vistas es Controlador de navegación -> OtroViewController -> EsteViewController

¿Dónde está mi error? ¿Qué esconde el título?

¿Puedes publicar?¿Un proyecto de ejemplo para GitHub?

- mate

27/03/2021 a las 20:18

primero intente depurar en la consola y verifique el valor del título.

Felicitaciones

27/03/2021 a las 20:29

@Kudos, ¿cuál sería el mejor lugar para comprobar el valor del título?

– Dan Anormal

27/03/2021 a las 20:38

cuando estás configurando el elemento de navegación correcto. Haga aquí un punto de interrupción y verifique.

Felicitaciones

27/03/2021 a las 20:49

El valor de NavigationItem.title es "Mitt konto" cuando está configurado, justo antes de que se configure rightBarButtonItem y también en viewdidAppear. Gracias por intentar ayudar, pero el valor está ahí. Tenga en cuenta también en mi pregunta que el títuloaparece durante el pop.

- Dan anormal

27/03/2021 a las 20:58



------------------------------------

No estoy seguro de en qué jerarquía se encuentra su controlador de vista, pero puede configurar el título como se muestra a continuación,

override func viewDidLoad() { 
super.viewDidLoad()
 /* If view controller is a direct child of UINavigationController */
 self.title = "Title Here" 
/* If view controller's parent is a direct child of UINavigationController e.g. a child of embedded tab view controller */
 self.parent?.title = "Title Here" 
}

3

Gracias por ayudar, pero ninguna de tus sugerencias funciona. Como digo en la pregunta, el título se establece. El problema parece ser que está oculto por algún motivo. Sin embargoEr, actualizaré mi pregunta con mi jerarquía de vistas. Buen punto.

- Dan anormal

27/03/2021 a las 20:42

Su jerarquía es clara, pero necesito más información para solucionar este problema

-ami solani

28 de marzo de 2021 a las 5:04

¿Puedes agregar el código completo del controlador de vista?

-ami solani

28/03/2021 a las 18:09



------------------------------------

Bien, entonces el problema era que mi backBtnView, a pesar de configurar su marco con ancho = 30, estaba cubriendo el título.

Lo descubrí dándole a la vista un color de fondo negro. La vista resultó ser mucho más amplia que 30.

Haciendo

backBtnView.frame.size.width = 30

después de la inicialización se solucionó el problema.

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare