Swiftui ForEach视图可以';t将“视图”修改器应用于选定视图
我有一个简单的水平列表视图,显示颜色列表,问题是我不知道如何将边框仅应用于一个选定的视图,因为现在它正在didTap上向列表中的所有视图添加白色边框,如果您知道如何实现,请帮助,谢谢您需要存储所选颜色的Swiftui ForEach视图可以';t将“视图”修改器应用于选定视图,swiftui,Swiftui,我有一个简单的水平列表视图,显示颜色列表,问题是我不知道如何将边框仅应用于一个选定的视图,因为现在它正在didTap上向列表中的所有视图添加白色边框,如果您知道如何实现,请帮助,谢谢您需要存储所选颜色的id,而不是bool 这是一个简单的演示(点击相同元素时取消选择是您的附加工作)。使用Xcode 12.5/iOS 14.5进行测试 struct ContentView:View{ @选择的状态私有var=-1//完全有意义,感谢您提供简单而好的解决方案 struct ContentView:
id
,而不是bool
这是一个简单的演示(点击相同元素时取消选择是您的附加工作)。使用Xcode 12.5/iOS 14.5进行测试
struct ContentView:View{
@选择的状态私有var=-1//完全有意义,感谢您提供简单而好的解决方案
struct ContentView: View {
@State private var selected = -1 // << here !!
@State private var colors: [Colour] = [
Colour(id: 1, color: .black),
Colour(id: 2, color: .yellow),
Colour(id: 3, color: .orange),
Colour(id: 4, color: .green),
Colour(id: 5, color: .red),
Colour(id: 6, color: .blue),
Colour(id: 7, color: .pink),
Colour(id: 8, color: .purple),
]
var body: some View {
ZStack {
Color.gray.opacity(0.2)
.ignoresSafeArea()
ScrollView(.horizontal, showsIndicators: false) {
HStack(spacing: 4) {
ForEach(colors) { color in
Rectangle()
.fill(color.color)
.frame(width: 100, height: 150)
.overlay(
Rectangle()
.stroke(selected == color.id ? Color.white : .clear, lineWidth: 5)
.animation(.spring())
)
.padding(5)
.onTapGesture {
selected = color.id // << here !!
print(color.id)
}
}
}
.padding(.leading, 8)
}
}
}
}