SwiftUI onDismiss 在呈现 sheet(Xcode Beta 5)时不触发

SwiftUI onDismiss not firing when presenting a sheet (Xcode Beta 5)

在 SwiftUI 中,我试图在 sheet 被关闭但未调用 'onDismiss' 闭包后向 运行 获取一些代码。

我正在 运行宁 Xcode Beta 5,IOS 13 构建目标

import SwiftUI

struct ModalView : View {
    @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
    var body: some View {
        Group {
            Text("Modal view")
            Button(action: { print("Dismiss button pressed"); self.presentationMode.value.dismiss() }) { Text("Dismiss") }
        }
    }
}

struct ContentView: View {
    @State var showModal: Bool = false
    var body: some View {
        Button(action: { self.showModal = true }) { Text("Show modal via .sheet modifier") }
        .sheet(isPresented: $showModal, onDismiss: { print("Modal Dismissed") }) { ModalView() }


    }
}

我应该看到:

Dismiss Button Pressed
Modal Dismissed

但我只得到

Dismiss Button Pressed

我是在做傻事还是这是另一个测试版问题?

我觉得你的代码没问题。 onDismiss 在您使用滑动手势关闭模态视图时被调用(正如您所期望的那样),但是当您使用 self.presentationMode.value.dismiss() 关闭模态视图时它不会被调用,这看起来像是错误给我。我看不出您的代码无法正常工作的任何原因。

同时的解决方法是将 onDismiss 闭包传递给您的 ModalView,然后在调用 self.presentationMode.value.dismiss() 后调用它。