如何解决(SWIFTUI) 从表单中读取数据,然后在不同视图的列表中显示数据
我的目标是,当用户在一个视图(添加新任务)上填写表单并按下“创建新任务”按钮时,表单中的数据将转移到另一个视图(视图分配)并成为列表中的新项目。此列表项将包含所有 5 个数据变量,并且应该是可点击的。
但是,我在连接视图之间的属性时遇到问题,这是我的“添加分配”页面的代码:
import SwiftUI
class Formviewmodel: ObservableObject {
@State var taskName = ""
@State var dueDate = ""
@State var subject = ""
@State var weighting = ""
@State var totalMarks = ""
@State var appPage = 0
}
struct AddAssignment: View {
@StateObject var viewmodel = Formviewmodel()
var body: some View {
NavigationView {
vstack {
HStack { // Titling
Spacer()
Text("Add New Task")
.font(.headline)
.scaleEffect(2.0)
Spacer()
Image(systemName: "plus.square.fill")
.scaleEffect(2.0)
Spacer()
}
Form { // Gathering data
Section {
TextField("Enter task name",text: $viewmodel.taskName)
TextField("Enter due date",text: $viewmodel.dueDate)
TextField("Enter subject",text: $viewmodel.subject)
}
Section(header: Text("Enter other task details:")) {
TextField("Enter task weighting",text: $viewmodel.weighting)
TextField("Enter total marks",text: $viewmodel.totalMarks)
}
}
Button(action: { // Part of vstack
ViewAssignment()
},label: {
Text("Create New Task")
.frame(width: 250,height: 50,alignment: .center)
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(8)
})
.padding()
}
}
}
}
struct AddAssignment_Previews: PreviewProvider {
static var previews: some View {
AddAssignment()
.preferredColorScheme(.dark)
}
}
首先,按钮没有移动到下一个视图,我收到一条警告,说“未使用‘ViewAssignment’初始化程序的结果”。而且,在另一个视图中连接的属性时,文本仍然没有出现。 这是另一个视图:
import SwiftUI
struct ViewAssignment: View {
@StateObject var viewmodel = Formviewmodel()
var body: some View {
vstack {
Text(viewmodel.taskName)
.padding()
Image(systemName: "house.fill")
}
}
}
struct ViewAssignment_Previews: PreviewProvider {
static var previews: some View {
ViewAssignment()
}
}
我不知道我应该使用@State 还是@Published,所以我对我要查找的错误有点困惑。即使我在另一个视图的表单中输入文本,也不会在屏幕上弹出任何文本。
任何帮助将不胜感激,即使有人可以指出我的教程方向。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。