Как можно сделать то же самое, когда переключается на виды Swiftui? Есть ли аналогичный простой способ отказаться от всех представленных подзадач? /> Поскольку scenedelegate знает rootvc, он может просто вызвать .dismiss (...) на него. Он может использовать свойство .presentedViewController для прохождения стека презентаций до вершины и оттуда Dimiss оттуда. Просто просмотры, которые представлены как .fullScreenCover , .sheet и т. Д. Способ проверить, представлены ли какие -либо представления Sub, есть ли? Как панель вкладок, удерживая разные представления. Этот корневой вид не может просто позвонить в метод увольнения во всех своих представлениях ребенка, чтобы отклонить любые (возможно) представленные представления. конечно. Но что, если в игру вступают сторонние взгляды, где rootview не знает, представлены ли подножки или нет? < /P>
Код: Выделить всё
struct TheRootView: View {
@State private var showDetail: Bool = false
var body: some View {
VStack {
Button("Go to Detail") {
showDetail = true
}
.padding()
.fullScreenCover(isPresented: $showDetail) {
ADetailView(showing: $showDetail)
}
ThirPartyView()
}
}
}
struct ADetailView: View {
@State private var showMoreDetails: Bool = false
@Binding var showing: Bool
var body: some View {
VStack {
Button("Show more Details") {
showMoreDetails = true
}
.padding()
.fullScreenCover(isPresented: $showMoreDetails) {
Text("More Details")
Button("Close") {
showMoreDetails = false
}
}
Button("Close") {
showing = false
}
}
}
}
struct ThirPartyView: View {
@State var showCover: Bool = false
var body: some View {
Button("Do something") {
showCover = true
}
.fullScreenCover(isPresented: $showCover) {
Button("Close") {
showCover = false
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... in-swiftui