(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 (将#修改为@)