我无法理解为什么我的变量“selectedItem”在此代码的一部分中更新,而不是在另一部分中更新。我的目标是做到这一点,以便当您点击网格中的图像时,它将所选图像名称传递给 ImageDetailView (理想情况下我希望它是一个导航链接,但一张表对我来说更容易测试..一步一步)。
在我有的地方,print(selectedItem)它会按预期在控制台中打印 LazyVGrid 的点击图像的名称。惊人的。
但随后打开的工作表是空白的,因为它仍在寻找“测试”...控制台显示一条消息“在资产目录中找不到名为“测试”的图像...”
为什么工作表仍然使用“test”的初始化值?而不是更新后的值?
结构ImagesView:视图{
@State var gridLayout: [GridItem] = [ GridItem() ]
var title: String
var imageSet = [Photo]()
@State private var selectedItem = "test"
var body: some View {
ZStack {
Color.black.edgesIgnoringSafeArea(.all)
GeometryReader { reader in
ScrollView {
LazyVGrid(columns: gridLayout, alignment: .center, spacing: 10) {
ForEach(imageSet.indices) { index in
Image(imageSet[index].name)
.resizable()
.onTapGesture {
showImageDetailView = true
selectedItem = imageSet[index].name
print(selectedItem)
}
)}
.padding(.horizontal, 10)
.padding(.bottom, 25)
}
.sheet(isPresented: $showImageDetailView, content: {
ImageDetailView(selectedItem: …Run Code Online (Sandbox Code Playgroud)