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.

Establecer el título de UINavigationController al presentar UIHostingController.

Tengo una vista de SwiftUI que se incluye en la pila de UINavigationController. No tengo ningún NavigationView dentro de SwiftUI y quiero mostrar el texto del título. ¿Cómo puedo lograr esto?

¿Cómo puedo crear mi controlador:

let viewModel = SettingsViewModel()
let settingsView = SettingsView().environmentObject(viewModel)
let controller = UIHostingController(rootView: settingsView)
controller.title = "Settings"
return UIHostingController(rootView: settingsView)

¿Qué hay dentro de SwiftUI:

struct SettingsView: View {
    // MARK: - Properties
    @EnvironmentObject var viewModel: SettingsViewModel

    // MARK: - View
    var body: some View {
        List(viewModel.settingItems) { item in
            Text(item.rawValue)
        }
    }
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para mostrar el texto del título en la pila del UINavigationController, puedes establecer la propiedad title del UIHostingController con el texto deseado. En tu código, puedes hacer esto agregando la línea controller.title = "Settings" después de crear el UIHostingController:

    let viewModel = SettingsViewModel()
    let settingsView = SettingsView().environmentObject(viewModel)
    let controller = UIHostingController(rootView: settingsView)
    controller.title = "Settings" // Establece el título aquí
    return controller // Retorna el controlador
    

    Además, asegúrate de haber establecido la propiedad title del UINavigationBar en largeTitleDisplayMode o automatic para que el título sea visible. Esto se puede hacer en el método viewDidLoad de tu controlador de vista, o estableciéndolo en el UINavigationController:

    navigationController?.navigationBar.prefersLargeTitles = true // Establece el modo de título grande aquí
    

    En tu SettingsView, como no tienes una NavigationView, puedes usar la propiedad title del UIHostingController para mostrar el texto del título en la barra de navegación.

Comments are closed.