swiftui - ForEach 循环的多个工作表
问题描述
我需要你的帮助,因为我不知道如何在我的 ForEach 循环中显示多张工作表。每次单击我的 ForEach 项目之一时,我都想展示我的 DetailView()。我相信 NavigationLink 可能会有所帮助,但我想坚持使用工作表。请帮助我解决我的问题。提前致谢。
import Foundation
import SwiftUI
struct DataArray: Identifiable {
let id: Int
let cities: String
let name1: String
let name2: String
let isBookMark: Bool
let isFavorite: Bool
}
public struct ListDataArray {
static let dot = [
DataArray(id: 1,
cities: "Baltimore"
name1: "John",
name2: "Mike",
isBookMark: False,
isFavorite: False),
DataArray(id: 2,
cities: "Frederick"),
name1: "Joe",
name2: "Swift",
isBookMark: False,
isFavorite: False),
DataArray(id: 3,
cities: "Catonsville"
name1: "Susan",
name2: "Oliver",
isBookMark: False,
isFavorite: False),
// There will be a lot of data
]
}
class Prospect: ObservableObject {
@Published var datas: [DataArray] = ListDataArray.dot
}
struct Home: View {
@EnvironmentObject var items: Prospect
var body: some View {
List {
ForEach(items.datas) { data in
Button {
//Action
} label: {
LazyHStack {
Text("\(data.id)")
.font(.title3)
Text(data.cities)
.font(.subheadline)
}
.padding()
}
.sheet(item: ) {
// Action for onDismiss
} content: { model in
DetailView(data: model)
}
}
.padding()
}
}
}
struct DetailView: View {
let data: DataArray
var body: some View {
VStack(spacing: 10) {
Text(data.cities)
Text(data.name1)
Text(data.name2)
}
.font(.body)
}
}
struct Home_Previews: PreviewProvider {
static var previews: some View {
Home()
.environmentObject(Prospect())
}
}
解决方案
您可以使用@State
变量来跟踪已选择的项目并将其传递给.sheet
参数item
:
struct Home: View {
@EnvironmentObject var items: Prospect
@State private var sheetItem : DataArray?
var body: some View {
List {
ForEach(items.datas) { data in
Button {
sheetItem = data
} label: {
LazyHStack {
Text("\(data.id)")
.font(.title3)
Text(data.cities)
.font(.subheadline)
}
.padding()
}
}
.padding()
}
.sheet(item: $sheetItem) {
// Action for onDismiss
} content: { model in
DetailView(data: model)
}
}
}
推荐阅读
- installation - 需要帮忙。很难安装 cocoapods
- python - 无法通过 python/selenium 查找/搜索链接并将它们保存到列表变量
- html - 如何在html中添加符号?
- assembly - 以下命令后的寄存器值
- javascript - 如何防止 JavaScript 将我的文本添加为数字
- ionic-framework - 如何将 Ionic v3 (3.9.1) navBar 后退按钮向右对齐?
- string - Lua string append function size versus hard-coded string
- azure - Adding users in Azure AD public client app
- neo4j - 日期时间和 iso 格式
- python - Python矩阵乘法 - 结果矩阵大小