【发布时间】:2020-01-08 16:23:07
【问题描述】:
有没有办法访问在ForEach 循环中创建的视图?我在这个循环上用这个结构创建视图(Rectangles)。我想在点击手势时更改矩形的填充颜色。
struct DisplayingRect:Identifiable {
var id = UUID()
var width:CGFloat = 0
var height:CGFloat = 0
var xAxis:CGFloat = 0
var yAxis:CGFloat = 0
init(width:CGFloat, height:CGFloat, xAxis:CGFloat, yAxis:CGFloat) {
self.width = width
self.height = height
self.xAxis = xAxis
self.yAxis = yAxis
}
}
ForEach(self.rects) { rect in
Rectangle()
.fill(Color.init(.sRGB, red: 1, green: 0, blue: 0, opacity: 0.2))
.frame(width: rect.width, height: rect.height)
.offset(x: rect.xAxis, y: rect.yAxis)
.id(rect.id)
.onTapGesture {
print("Clicked")
self.rectTapped = rect.width
print(rect.width)
print(rect.id)
if !self.didTap {
self.didTap = true
} else {
self.didTap = false
}
}
我可以为每个视图分配一个 id 设置其 id 属性,但我不知道它们存储在哪里或如何在单击时修改它们。我可以创建返回视图(矩形)的函数并将它们存储在一个数组中,然后在屏幕上显示它们,但是我不知道如何访问它们并修改我想要的。
【问题讨论】: