🦋

SwiftUI: カスタムViewModifierでcontentはモーダルの中では表示されない

2023/10/13に公開
struct ModalModifier<L: View>: ViewModifier {
    @State var isPresented: Bool = false
    let label: () -> L

    func body(content: Content) -> some View {
        Button {
            isPresented = true
        } label: {
            label()
        }
        // 例1
        .sheet(isPresented: $isPresented) {
            content
        }
        // 例2
        .fullScreenCover(isPresented: $isPresented) {
            content
        }
    }
}

この様なカスタムViewModifierを作って使ってみてもcontentは表示されないことがわかりました。

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Hello")
                .modifier(ModalModifier(label: {
                    Label("Go", systemImage: "car")
                }))
        }
        .padding()
    }
}


例1のパターン

Discussion