Actualmente, tengo un enlace de navegación dentro de una hoja. Esto crea una nueva página dentro de esa hoja en lugar de ocupar la pantalla completa. ¿Hay alguna forma de descartar la hoja y luego presentar la vista en la pantalla original?
Vista original con un botón que abre una hoja:
Button { userTappedItem = item } label: { ... } .sheet(item: $userTappedItem) { } content: { item in NewView(item: item) }NavigationLink dentro de NewView:
NavigationLink { ViewIWantAsFullScreen() } label: { ... }Sí, esto es factible. El bit más importante es la demora entre descartar la hoja y presentar la portada de pantalla completa; sin esta demora, la View de portada de pantalla completa simplemente reemplaza el contenido de la hoja.
struct ContentView : View { @State private var sheetDisplayed = false @State private var fullScreenDisplayed = false var body: some View { VStack { Button("Show Sheet") { sheetDisplayed.toggle() }.sheet(isPresented: $sheetDisplayed) { SheetView(closeAndDisplayFullScreen: { sheetDisplayed = false DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { fullScreenDisplayed = true } }) } }.fullScreenCover(isPresented: $fullScreenDisplayed) { FullScreenView() } } } struct SheetView : View { var closeAndDisplayFullScreen : () -> Void var body: some View { Button("Show full screen after dismiss") { closeAndDisplayFullScreen() } } } struct FullScreenView : View { var body: some View { Text("Full screen") } }