gpt4 book ai didi

swift - ForEach 内的工作表不会遍历项目 SwiftUI

转载 作者:行者123 更新时间:2023-12-03 09:22:35 26 4
gpt4 key购买 nike

我在 ForEach 中使用工作表时遇到问题。基本上我有一个列表,它显示了我的数组中的许多项目和一个触发工作表的图像。问题是当我的工作表出现时,它只显示我的数组的第一项,在这种情况下是“哈利波特”。
这是代码

struct ContentView: View {
@State private var showingSheet = false

var movies = ["Harry potter", "Mad Max", "Oblivion", "Memento"]
var body: some View {
NavigationView {
List {
ForEach(0 ..< movies.count) { movie in
HStack {
Text(self.movies[movie])
Image(systemName: "heart")
}
.onTapGesture {
self.showingSheet = true
}
.sheet(isPresented: self.$showingSheet) {
Text(self.movies[movie])
}
}
}
}
}
}

最佳答案

应该只有一个工作表,所以这是可能的方法 - 使用另一个工作表修改器并通过选择激活它
使用 Xcode 12/iOS 14 测试(iOS 13 兼容)

extension Int: Identifiable {
public var id: Int { self }
}

struct ContentView: View {
@State private var selectedMovie: Int? = nil

var movies = ["Harry potter", "Mad Max", "Oblivion", "Memento"]
var body: some View {
NavigationView {
List {
ForEach(0 ..< movies.count) { movie in
HStack {
Text(self.movies[movie])
Image(systemName: "heart")
}
.onTapGesture {
self.selectedMovie = movie
}
}
}
.sheet(item: self.$selectedMovie) {
Text(self.movies[$0])
}
}
}
}

关于swift - ForEach 内的工作表不会遍历项目 SwiftUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63088893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com