Jon*_*ann 5 modal-dialog ios swift swiftui
我想在没有关闭动画的情况下关闭模态,因为我想使用视图路由器从模态视图导航到新的 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")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
资料来源:@M Reza Farahani 的回答
由于我没有 ViewRouter,所以没有完全测试这一点
你应该移动
@Environment(\.presentationMode) var presentationMode
Run Code Online (Sandbox Code Playgroud)
ModalView 并添加
self.presentationMode.wrappedValue.dismiss()
Run Code Online (Sandbox Code Playgroud)
到该 ModalView 中的按钮操作
编辑:
我添加后
.animation(.none)
Run Code Online (Sandbox Code Playgroud)
到 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)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1764 次 |
| 最近记录: |