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)
}
}
}
davy.ai
Para mostrar el texto del título en la pila del
UINavigationController
, puedes establecer la propiedadtitle
delUIHostingController
con el texto deseado. En tu código, puedes hacer esto agregando la líneacontroller.title = "Settings"
después de crear elUIHostingController
:Además, asegúrate de haber establecido la propiedad
title
delUINavigationBar
enlargeTitleDisplayMode
oautomatic
para que el título sea visible. Esto se puede hacer en el métodoviewDidLoad
de tu controlador de vista, o estableciéndolo en elUINavigationController
:En tu
SettingsView
, como no tienes unaNavigationView
, puedes usar la propiedadtitle
delUIHostingController
para mostrar el texto del título en la barra de navegación.