【SwiftUI】Sheetを手動で閉じられないようにする方法

iOS

SwiftUIでSheetを下にスワイプしたときに、Sheetが閉じられないようにする方法が何回ググっても覚えられないので、メモしておきます。

.interactiveDismissDisabled()を使う

Sheetの中身のViewに対して.interactiveDismissDisabled()というモディファイアーを適用することで、Sheetを閉じられなくすることができます。

struct parentView : View {
    @State var isPresent = false
    var body : some View {
        Text("親View")
        .sheet(isPresent : $isPresent) {
            sheetView()
            .interactiveDismissDisabled()
        }
    }  
}

struct sheetView : View {
    var body : some View {
        Text("シートのView")
    }
}

シートの方のViewに閉じるボタンを実装しないとシートが閉じられなくなるので注意します。

シートの方のViewには@Environment(\.dismiss) var dismissを宣言して、閉じるボタンのactionでdismiss()をすれば閉じられるようになります。

以上

コメント