es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El controlador de navegación de los elementos de navegación no se muestra como esperaba.

Sigo un video de YouTube. Y me encontré con un problema cuando intenté configurar los elementos del controlador de navegación.

    func setupNavigationBarItems()  {
        let twitterImage = UIImageView(image: UIImage(named: "twitter_icon"))
        twitterImage.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
        twitterImage.contentMode = .scaleAspectFit

        navigationController?.navigationItem.titleView = twitterImage

        let profileButton = UIButton(type: .system)
        profileButton.setImage(UIImage(named: "profile_image"), for: .normal)
        profileButton.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
        navigationController?.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: profileButton)
    }

Resultado

Este es el resultado. No se muestra nada.

Edit–
Realicé algunos cambios

  navigationController?.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: profileButton)
  navigationItem.leftBarButtonItem = UIBarButtonItem(customView: profileButton)

Solamente muestra el botón de perfil y el botón se extiende hasta los bordes.

Nuevo resultado

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La función setupNavigationBarItems() intenta modificar los elementos de la barra de navegación de un UINavigationController. Sin embargo, parece que el código no está funcionando correctamente ya que los elementos deseados no están apareciendo.

    Un problema con el código es que intenta establecer el titleView del navigationItem del navigationController, lo cual puede ser incorrecto. En su lugar, el titleView debería ser establecido directamente en el navigationItem del controlador de vista actual. El elemento de botón de barra izquierda se está estableciendo correctamente en el navigationItem del navigationController, pero puede estar abarcando los bordes debido a la customView que está siendo establecida.

    Para solucionar estos problemas, el código debería ser modificado de la siguiente manera:

    func setupNavigationBarItems() {
        let twitterImage = UIImageView(image: UIImage(named: "twitter_icon"))
        twitterImage.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
        twitterImage.contentMode = .scaleAspectFit
    
        navigationItem.titleView = twitterImage
    
        let profileButton = UIButton(type: .system)
        profileButton.setImage(UIImage(named: "profile_image"), for: .normal)
        profileButton.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
        profileButton.contentMode = .scaleAspectFit
    
        navigationItem.leftBarButtonItem = UIBarButtonItem(customView: profileButton)
    }
    

    Al establecer el titleView en el navigationItem del controlador de vista actual, podemos asegurarnos de que se muestre correctamente. Además, hemos agregado el modo de contenido .scaleAspectFit a la vista de imagen del profileButton para evitar que se abarque los bordes.

Comments are closed.