ios - 在 SwiftUI 扩展中动态数据传递和呈现网格图像的 View

标签 ios swift swiftui xcode11.3

我正在使用 SwiftUIExtensions库,并希望使“StaggeredGridView”中的图像可点击,以显示带有点击图像和一些相关信息的新 View 。

目前我正在按照下面的代码工作,但仍然不确定如何传递数据(索引 - 这里基本上是图像名称)。

var body: some View {
    Grid(1...20, id: \.self) { index in
        Image("\(index)")
            .resizable()
            .scaledToFit()
            .onTapGesture(count: 2) {
                // Action on Double tapped

                self.showingDetails.toggle()
        }
            .sheet(isPresented: self.$showingDetails) {
                    ProductDetails()
                }

    }

我的产品 View 如下:

import SwiftUI

struct ProductDetails: View {
    var body: some View {
        Text("Detail")
    }
}

Xcode 版本:Xcode 11.3

最佳答案

如果您想将 index 传递到 ProductDetails 中,您可以按以下方式进行:

@State var currentIndex = 0
var body: some View {
    Grid(1...20, id: \.self) { index in
        Image("\(index)")
            .resizable()
            .scaledToFit()
            .onTapGesture(count: 2) {
                // Action on Double tapped
                self.currentIndex = index
                self.showingDetails.toggle()
        }
            .sheet(isPresented: self.$showingDetails) {
                    ProductDetails(selection: self.$currentIndex)
                }

    }


struct ProductDetails: View {
    @Binding var selection: Int
    var body: some View {
        Text("Detail \(selection)")
    }
}

关于ios - 在 SwiftUI 扩展中动态数据传递和呈现网格图像的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59484275/

相关文章:

swiftUI 月亮形状

ios - 核心数据 : Trouble getting the managedObjectContext and model

ios - 如何在 iOS NotificationCenter addObserver 中查找更改的设置

iphone - ios检测线角度或度数

swift - CollectionView 错误 [swift]

Swift - 使用照片框架选择时保持照片质量

swift - 将运行脚本生成的文件添加到Xcode中的测试目标编译列表中

swift - 如何从SwiftUI的另一个 View 中删除列表的项目?

ios - 重新加载表数据时应用程序崩溃

swift - 从 @Binding var 修改 @State var 不会刷新 SwiftUI 中的 View