在SwiftUI中,我试图在关闭工作表但不调用'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() }
}
}
Run Code Online (Sandbox Code Playgroud)
我应该看到:
Dismiss Button Pressed
Modal Dismissed
Run Code Online (Sandbox Code Playgroud)
但我只会
Dismiss Button Pressed
Run Code Online (Sandbox Code Playgroud)
我是不是在做一些愚蠢的事情,或者这是另一个beta问题?
您的代码对我来说很好。onDismiss当您使用滑动手势关闭模态视图时(如您所料)会被调用,但是当您self.presentationMode.value.dismiss()用来关闭模态视图时不会被调用,这对我来说似乎是个错误。我看不出您的代码无法正常工作的任何原因。
同时,一种解决方法是将onDismiss闭包传递给您ModalView,然后在调用后调用它self.presentationMode.value.dismiss()。
| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |