👏
onDismissはDismissActionで呼ばれる
「.sheet(item:onDismiss:content:)
の onDismiss
はユーザーのインタラクションでしか呼ばれない」のような情報がネットにあったので検証してみました。
結果
@Environment(\.dismiss) var dismiss
を利用した閉じるアクションだとちゃんと呼ばれるのを確認できました。
検証コード
気になる方はお手元でご検証ください。
struct ContentView: View {
@State private var isModalPresented: Bool = false
@State private var text: String = "Present Modal"
var body: some View {
Button(text) {
isModalPresented = true
}
.sheet(isPresented: $isModalPresented, onDismiss: {
text = "On Dismiss Called"
}, content: {
ModalView()
})
}
}
struct ModalView : View {
@Environment(\.dismiss) var dismiss
var body: some View {
Button("Dismiss") {
dismiss()
}
}
}
#Preview {
ContentView()
}
Discussion