我正在构建一个自定义视图,并试图操纵其子级的活动状态。
我有这个:
struct Menu<Content>: View where Content: View {
@ViewBuilder var content: () -> Content
var body: some View {
content()
}
}
struct ScreenView: View {
var body: some View {
Menu {
Text("Home")
Text("Settings")
Text("Profile")
}
}
}
我希望能够将绑定传递到Menu
视图,并在此基础上,如果状态与视图的实际文本或id匹配,则可以更改文本颜色。有一个Picker视图示例,它实现了我想要实现的目标。选取器正在管理所选元素的外观。我错了吗?
struct PickerViewExample: View {
@State var selection: Int
var body: some View {
Picker(selection: $selection, label: Text("Picker"), content: {
Text("1").tag(1)
Text("2").tag(2)
})
}
}
我想知道是否有一种方法可以以某种方式访问ForEach
content
ViewBuilder属性,以便操作子视图。我喜欢苹果使用标签解决这个问题的方式。欢迎任何其他选择。
我认为,这将有助于
struct ContentView: View {
private var menuItem = ["Home", "Settings", "Profile"]
@State private var selectedMenu = "Home"
var body: some View {
VStack {
Picker("Menu", selection: $selectedMenuIndex, content: {
ForEach(menuItem, id: .self, content: { title in
Text(title)
})
})
Text("Selected menu: (selectedMenu)")
}
}
}