I have two views that I want to use as possible parameters in another view. I've been using AnyView, but would much rather use @ViewBuilder instead; I'm not 100% sure on how to implement this though. See below:
View1
struct View1: View {
let title: String
let text: String
var body: some View {
HStack {
Text(title)
Text(text).bold()
}
}
}
View 2
struct View2: View {
let title: String
let text: String
var body: some View {
HStack {
Text(title).bold()
Text(text)
}
}
}
ParameterView - currently the view
parameter being passed through is being wrapped in AnyView()
.
struct ParameterView: View {
let title: String
let view: any View
var body: some View {
HStack {
Text(title)
AnyView(view)
}
}
}
In practice:
struct ParameterView_Previews: PreviewProvider {
static var previews: some View {
VStack {
ParameterView(
title: "Noodles",
view: View1(title: "£", text: "1.00")
) // Noodles £ 1.00
ParameterView(
title: "Mass",
view: View2(title: "100", text: "g")
) // Mass 100 g
}
}
}