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.

¿Cómo configurar el botón “atras” para ir al homecontroller después de abrir el viewcontroller de push notification en iOS?

He definido el controlador de vista deseado cuando se toca una notificación push en IOS 11.

Pero cuando hago clic en el botón “atrás”, no va a ninguna parte porque no se ha creado ninguna pila. ¿Cómo puedo definir el botón “atrás” como controlador de inicio -> raíz después de tocar una notificación push?

func userNotificationCenter(_ center: UNUserNotificationCenter,
                            didReceive response: UNNotificationResponse,
                            withCompletionHandler completionHandler: @escaping () -> Void) {
    let userInfo = response.notification.request.content.userInfo
    if let messageID = userInfo[gcmMessageIDKey] {
        print("ID del mensaje: \(messageID)")
    }
    let viewController = InboxController()

    let navigationController = UINavigationController(rootViewController: viewController)
    navigationController.modalPresentationStyle = .overFullScreen
    navigationController.modalTransitionStyle = .coverVertical
    window?.rootViewController = navigationController
    window?.makeKeyAndVisible()
    completionHandler()
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    En el código proporcionado, se crea una nueva instancia de InboxController y se establece como el controlador de vista raíz de un nuevo UINavigationController. Para definir el botón “atrás” que va al controlador de inicio, podemos modificar el UIBarButtonItem que se establece como el botón de retroceso en InboxController:

    class InboxController: UIViewController {
        override func viewDidLoad() {
            super.viewDidLoad()
    
            // Establecer un botón de retroceso personalizado
            let backButton = UIBarButtonItem(title: "Inicio", style: .plain, target: self, action: #selector(backToHome))
            navigationItem.leftBarButtonItem = backButton
        }
    
        // Función para retroceder al controlador de vista raíz (controlador de inicio)
        @objc func backToHome() {
            navigationController?.popToRootViewController(animated: true)
        }
    }
    

    Al establecer un UIBarButtonItem personalizado con un destino y una acción en viewDidLoad(), podemos definir lo que queremos que suceda cuando se presione el botón. En este caso, definimos una función backToHome() para retroceder la pila de navegación actual hasta el controlador de vista raíz (controlador de inicio).

Comments are closed.