gpt4 book ai didi

ios - 有没有办法在 SwiftUI 中关闭没有动画的模态视图?

转载 作者:行者123 更新时间:2023-12-04 11:44:54 24 4
gpt4 key购买 nike

有没有办法在 SwiftUI 中关闭没有动画的模态视图?

我想在没有关闭动画的情况下关闭模态,因为我想使用 View 路由器从模态视图导航到新的 SwiftUI View 。一切正常,除了从模态视图到新的全屏 View 的过渡动画。我按照该教程创建了一个 View 路由器:Tutorial

我正在使用该代码片段来呈现模态视图:

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")
}
}
}
}

来源: Answer by @M Reza Farahani

这是 Swift 中的解决方案: Swift solution

最佳答案

由于我没有 ViewRouter,因此没有对此进行全面测试

你应该移动

@Environment(\.presentationMode) var presentationMode

ModalView 并添加
self.presentationMode.wrappedValue.dismiss()

到该 ModalView 中的按钮操作

编辑:

我添加后
.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)
}
}

关于ios - 有没有办法在 SwiftUI 中关闭没有动画的模态视图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62268834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com