在SwiftUI中,有没有一种方法可以在没有动画的情况下解除模态视图?

问题描述 投票:0回答:1

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

来源: 回答者:@M Reza Farahani

下面是一个Swift的解决方案。Swift的解决方案

ios swift modal-dialog swiftui
1个回答
0
投票

没有完全测试,因为我没有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)
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.