在 SwiftUIExtensions 中动态数据传递和呈现网格图像的视图
Dynamic data passing and presenting views of Grid Images in SwiftUIExtensions
我正在使用 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版本:Xcode11.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)")
}
}
我正在使用 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版本:Xcode11.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)")
}
}