swift - ForEach 中的工作表不会遍历项目 SwiftUI
问题描述
我在 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])
}
}
}
}
推荐阅读
- jquery - 根据 flexbox 容器的高度设置字体大小
- database - 无法在 Oracle 11g 上将对象类型插入表中
- php - 将 ajax 发送的 $_POST 替换为另一个 $_POST
- r - R Shiny:转置和显示用户上传的文件
- python - 仅使用开源工具从 Python 中查找和计算 SAS7BDAT 文件中的记录总数
- matlab - Matlab`bar`:控制条组之间的间距
- tfs - 检索 TFS 对话框参数
- c# - 用一个函数制作多个对象
- python-3.x - 如何在 Pybel 中禁用记录的警告?
- math - 仅使用 - + * 操作检查 n 个数字是否都是奇数或偶数