私はCustomContentView()を持っており、これをデフォルトとして{}のような空のコンテンツを指定します。これは、ユースケースで行う必要はありません。たとえば、Colorに対して同じことを行いました。
詳細:ViewBuilderを使用せずに、またはCustomContentViewを関数に変換しなくても、答えは問題を解決できます。必要に応じてコンテンツをフィードできるようになるまで、すべて問題ありません。
struct ContentView: View {
var body: some View {
CustomContentView(content: { Text("hello") })
CustomContentView(content: { })
// I like this one: CustomContentView() How can I do this?
}
}
struct CustomContentView<Content: View>: View {
let content: () -> Content
let color: Color
init( @ViewBuilder content: @escaping () -> Content, color: Color = Color.red) {
self.content = content
self.color = color
}
var body: some View {
ZStack {
Rectangle()
.fill(color)
content()
}
}
}
のでCustomContentView
に関してジェネリック型であるContent
、とあなたは既定のコンテンツが空になりたい、あなたが作成する必要があるinit
に拘束過負荷Content
であることをEmptyView
:
init(color: Color = .red) where Content == EmptyView {
self.init(content: { EmptyView() }, color: color)
}
使用法はあなたが期待する通りです:
CustomContentView()
// or
CustomContentView(color: .blue)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加