0

我的目标是,当用户在一个视图(添加新任务)上填写表单并按下“创建新任务”按钮时,表单中的数据将转移到另一个视图(查看作业)并成为列表中的新项目。此列表项将包含所有 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,所以我对要查找的错误有点困惑。即使我在另一个视图的表单中输入文本,屏幕上也不会弹出任何文本。

任何帮助将不胜感激,即使有人可以向我指出教程的方向。

4

0 回答 0