问题描述
我有两个视图,ViewAssignment 和 TaskDetailView。我的 ViewAssignment 页面从环境对象中获取数据,并使用该数据创建一个列表。
在单击列表的每个项目时,TaskDetailView 作为导航链接弹出,但是,我无法将 TaskDetailView 中的信息设为该特定迭代(列表中的项目)的唯一信息
我相信问题来自我的 TaskDetailView.swift
import SwiftUI
struct TaskDetailView: View {
@EnvironmentObject var assignment: Assignments
@State var taskNotes = ""
var body: some View {
vstack(spacing: 10) {
Image("english-essay")
.resizable()
.scaledToFit()
.frame(width: 250,height: 160)
.cornerRadius(20)
Text(self.assignment.data.first?.taskName ?? "Untitled Task")
.font(.title2)
.fontWeight(.semibold)
.lineLimit(2)
.multilineTextAlignment(.center)
HStack(spacing: 20) {
Label(self.assignment.data.first?.weighting ?? "0",systemImage: "percent")
.font(.subheadline)
.foregroundColor(.secondary)
Text(self.assignment.data.first?.dueDate ?? "No Date")
.font(.subheadline)
.foregroundColor(.secondary)
}
TextField("Write any notes here",text: $taskNotes)
.font(.body)
.padding()
Spacer()
}
}
}
struct TaskDetailView_Previews: PreviewProvider {
static var previews: some View {
TaskDetailView() // I assume there is some information I have to pass through here
}
}
详情,这是我的另一个观点:
import SwiftUI
struct ViewAssignment: View {
// Observed to update the UI
@EnvironmentObject var assignment: Assignments
var body: some View {
ZStack {
NavigationView {
List(self.assignment.data) { task in
NavigationLink (
destination: TaskDetailView(),label: {
Image(systemName: "doc.append.fill")
.scaleEffect(2.5)
.padding()
vstack(alignment: .leading,spacing: 3) {
Text(task.taskName)
.fontWeight(.semibold)
.lineLimit(2)
Text(task.dueDate + " - " + task.subject)
.font(.subheadline)
.foregroundColor(.secondary)
}
})
}
.navigationTitle("My Tasks")
.listStyle(InsetGroupedListStyle())
}
}
}
}
struct ViewAssignment_Previews: PreviewProvider {
static var previews: some View {
ViewAssignment()
}
}
我还想知道,在为列表中的每个项目设置唯一的屏幕后,我是否能够在重新加载应用程序时保存文本字段的内容,也许通过@AppStorage? 感谢您的帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)