在SwiftUIExtensions中动态数据传递和呈现网格图像的视图

时间:2019-12-26 05:42:50

标签: ios swift swiftui xcode11.3

我正在使用SwiftUIExtensions库,并希望在可单击的“ StaggeredGridView”中显示图像,从而提供带有单击的图像的新视图以及与之相关的一些信息。

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

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

    }

我的产品视图如下:

import SwiftUI

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

Xcode版本:Xcode 11.3

1 个答案:

答案 0 :(得分:0)

如果您想将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)")
    }
}