@ViewBuilder を使用して複数の子をサポートするビューを作成する 質問する

@ViewBuilder を使用して複数の子をサポートするビューを作成する 質問する

VStack や HStack など、SwiftUI の一部のビューは、次のように複数のビューを子として持つことをサポートしています。

VStack {
  Text("hello")
  Text("world")
}

私が知る限り、彼らはビュービルダー説明したようにこれを可能にするためにここ

複数の子をサポートする独自のビューを作成するために、@ViewBuilder をどのように使用できますか? たとえば、Layout任意の子を受け入れるビューを作成するとします。次のようになります。

struct Layout : View {
  let content: Some View 

  var body : some View {
    VStack {
      Text("This is a layout")
      content()
    }
  } 
}

このパターンを SwiftUI で実装する方法をご存知ですか?

ベストアンサー1

以下は、 の使用方法を示すためだけに何もしないサンプルビューです@ViewBuilder

struct Passthrough<Content>: View where Content: View {

    let content: () -> Content

    init(@ViewBuilder content: @escaping () -> Content) {
        self.content = content
    }

    var body: some View {
        content()
    }

}

使用法:

Passthrough {
    Text("one")
    Text("two")
    Text("three")
}

おすすめ記事