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")
}