如何重现选取器的选择绑定?



我正在构建一个自定义视图,并试图操纵其子级的活动状态。

我有这个:

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

我想知道是否有一种方法可以以某种方式访问ForEachcontentViewBuilder属性,以便操作子视图。我喜欢苹果使用标签解决这个问题的方式。欢迎任何其他选择。

我认为,这将有助于

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

最新更新