Mover de una escena de SpriteKit a una vista de SwiftUI
Intento descubrir la forma correcta de regresar a una vista de SwiftUI desde una escena de SpriteKit. Actualmente tengo un “menú principal” en Swift UI que se ve de la siguiente manera.
struct MainMenu: View {
var body: some View {
NavigationView {
VStack {
Text("Replicator")
.font(.largeTitle)
.fontWeight(.bold)
.padding()
NavigationLink(destination: ContentView().navigationBarBackButtonHidden(true)) {
HStack {
Image(systemName: "play.circle")
.font(.title3)
Text("Start")
.font(.title)
}
.frame(width: 250, height: 50)
.background(.cyan)
.cornerRadius(25)
.foregroundColor(.white)
}
}
}
}
}
ContentView() es lo que contiene el juego de SpriteKit y se ve de la siguiente manera.
struct ContentView: View {
var scene: SKScene {
let scene = Level_1()
scene.size = CGSize(width: 750, height: 1334)
scene.scaleMode = .aspectFit
return scene
}
var body: some View {
VStack {
SpriteView(scene: scene)
.ignoresSafeArea()
}
}
}
Mi pregunta es… ¿cómo regreso a “Menú principal” una vez que estoy en ContentView?
Gracias por cualquier ayuda que puedas proporcionar.
davy.ai
Para regresar al Menú Principal desde ContentView en SwiftUI, puedes utilizar NavigationLink y pasar la vista MainMenu como destino. Primero, necesitas agregar una barra de navegación a ContentView y luego crear un nuevo NavigationLink con MainMenu como destino.
Así es como puedes modificar ContentView para agregar una barra de navegación y un NavigationLink:
Cuando se pulsa el botón “Volver al Menú Principal”, se descarta la vista y se vuelve a la vista anterior, que es el Menú Principal.
Ten en cuenta que necesitas utilizar la propiedad
presentationMode
para descartar la vista en lugar de añadir un nuevoNavigationLink
. La razón de esto es queNavigationLink
crea una nueva pila de vistas, lo que significa que acabarías con múltiples instancias de la vista MainMenu si lo utilizas para volver atrás.