我想在没有解散动画的情况下解散一个模态,因为我想使用视图路由器从模态视图导航到一个新的SwiftUI视图。除了从模态视图到新的全屏视图的过渡动画外,一切都正常。我按照那个教程来创建一个视图路由器。教程
我正在使用该代码片段来呈现模态视图。
struct ContentView: View {
@State private var showModal = false
@Environment(\.presentationMode) var presentationMode
var body: some View {
Button(action: {
self.showModal = true
}) {
Text("Show modal")
}.sheet(isPresented: self.$showModal) {
ModalView()
}
}
}
struct ModalView: View {
@EnvironmentObject var viewRouter: ViewRouter
var body: some View {
Group {
Text("Modal view")
Button(action: {
self.viewRouter.currentPage = "New View"
}) {
Text("Dismiss")
}
}
}
}
下面是一个Swift的解决方案。Swift的解决方案
没有完全测试,因为我没有ViewRouter。
你应该移动
@Environment(\.presentationMode) var presentationMode
的模式视图,并添加
self.presentationMode.wrappedValue.dismiss()
中的按钮操作。
编辑。
在我加上
.animation(.none)
在ModalView中,它为我工作
好吧,这是一个丑陋的**评论,所以把它放在这里。
struct ModalView: View {
// @EnvironmentObject var viewRouter: ViewRouter
@Environment(\.presentationMode) var presentationMode
var body: some View {
Group {
Text("Modal view")
Button(action: {
// self.viewRouter.currentPage = "New View"
self.presentationMode.wrappedValue.dismiss()
}) {
Text("Dismiss")
}
}
.animation(.none)
}
}