SwiftUI如何在新视图中链接ForEach索引和照片索引?
如何在新视图中链接forEach索引和照片索引?尝试按按钮打开新视图。这个新视图有一个旋转木马,它是由这个结构创建的。通过NavigationLink打开视图时,carouselList中的所有照片都会正确显示,具体取决于索引,但按钮不起作用,始终打开第一个索引SwiftUI如何在新视图中链接ForEach索引和照片索引?,swiftui,Swiftui,如何在新视图中链接forEach索引和照片索引?尝试按按钮打开新视图。这个新视图有一个旋转木马,它是由这个结构创建的。通过NavigationLink打开视图时,carouselList中的所有照片都会正确显示,具体取决于索引,但按钮不起作用,始终打开第一个索引 struct Catalog: View { @State private var isOpen = false var shop: Shop = shops[0] var picture: Picture = pictures
struct Catalog: View {
@State private var isOpen = false
var shop: Shop = shops[0]
var picture: Picture = pictures[0]
var body: some View {
ScrollView(.vertical, showsIndicators: false) {
VStack(spacing: 0) {
ScrollView(.horizontal, showsIndicators: false) {
HStack {
ForEach(0..<shops.count, id: \.self) { index in
Button(action: {
self.isOpen.toggle()
}) {
ShopItem(shop: shops[index])
} .sheet(isPresented: $isOpen) {
PictureItem(picture: pictures[index])
}
}
}
.padding(.top, 10)
}
}
}
struct目录:视图{
@国家私有变量isOpen=false
var车间:车间=车间[0]
变量图片:图片=图片[0]
变量体:某些视图{
滚动视图(.vertical,showsIndicators:false){
VStack(间距:0){
滚动视图(.horizontal,showsIndicators:false){
HStack{
ForEach(0..这是因为每个视图只能放置一次.sheet修改器。因此,当您使用此代码时,它仅在第一个循环中配置.sheet。我建议对这种类型的segue使用NavigationLink
如果需要强制执行此操作,可以(1)将.sheet移到ForEach之外,(2)为所选图片创建@State变量,(3)在切换isOpen之前更新按钮中的该变量,然后在图片中为所选变量使用@Binding。如下所示:
struct Catalog: View {
@State private var isOpen = false
var shops: [String] = ["One", "two", "three"]
var shop: String = "ONE"
var pictures: [String] = ["one", "two", "three"]
@State var picture: String = "PIC ONE"
var body: some View {
ScrollView(.vertical, showsIndicators: false) {
VStack(spacing: 0) {
ScrollView(.horizontal, showsIndicators: false) {
HStack {
ForEach(0..<shops.count, id: \.self) { index in
Button(action: {
self.picture = pictures[index]
self.isOpen.toggle()
}) {
Text(shops[index])
}
}
}
.padding(.top, 10)
}
.sheet(isPresented: $isOpen) {
PictureItem(string: $picture)
}
}
}
}
}
struct PictureItem: View {
@Binding var string: String
var body: some View {
Text(string)
}
}
struct目录:视图{
@国家私有变量isOpen=false
变量商店:[字符串]=[“一”、“二”、“三”]
var-shop:String=“一”
变量图片:[字符串]=[“一”、“二”、“三”]
@状态变量图片:String=“PIC ONE”
var body:一些观点{
滚动视图(.vertical,showsIndicators:false){
VStack(间距:0){
滚动视图(.horizontal,showsIndicators:false){
HStack{
ForEach(0。。