我正在尝试创建一个能够创建和查看分配的应用程序。我有一个叫做AddAssignment.swift和ViewAssignment.swift的页面,我正试图从AddAssignment页面移动到ViewAssignment页面上的一个按钮。
用户应该在文本框中输入详细信息,然后当按下按钮时,我想保存文本框中的信息并移动到View Assignments屏幕。到目前为止,我还不能让这个按钮正常工作。
下面是我的代码:import SwiftUI
struct AddAssignment: View {
// Properties
@State var taskName = ""
@State var dueDate = ""
@State var subject = ""
@State var weighting = ""
@State var totalMarks = ""
// Methods
func saveTask(a:String,b:String,c:String,d:String,e:String) -> [String] {
var newTask: [String] = []
newTask.append(a);
newTask.append(b);
newTask.append(c);
newTask.append(d);
newTask.append(e);
return newTask
}
// Main UI
var body: some View {
VStack {
Text("Add New Task")
.font(.headline)
.padding()
.scaleEffect(/*@START_MENU_TOKEN@*/2.0/*@END_MENU_TOKEN@*/)
Spacer()
Image(systemName: "plus.app.fill")
.foregroundColor(Color.orange)
.scaleEffect(/*@START_MENU_TOKEN@*/5.0/*@END_MENU_TOKEN@*/)
Spacer()
Group { // Text Fields
TextField("Enter assignment name", text: $taskName)
.padding([.top, .leading, .bottom])
TextField("Enter due date", text: $dueDate)
.padding([.top, .leading, .bottom])
TextField("Enter subject", text: $subject)
.padding([.top, .leading, .bottom])
TextField("Enter percent weighting", text: $weighting)
.padding([.top, .leading, .bottom])
TextField("Enter total marks", text: $totalMarks)
.padding([.top, .leading, .bottom])
}
Spacer()
Button("Create New Task", action: {
let task: [String] = [taskName, dueDate, subject, weighting, totalMarks]
print(task)
ViewAssignment()
})
Spacer()
}
}
}
struct AddAssignment_Previews: PreviewProvider {
static var previews: some View {
AddAssignment()
}
}
控制台能够返回教科书的值并存储此信息,我只是不确定如何将其带到ViewAssignment.swift文件中的另一个结构体。
要使"移动"生效,请将此添加到" AddAssignment":
struct AddAssignment: View {
@State var toAssignment: Int? = nil
替换按钮("Create New Task", action:{…},
NavigationLink(destination: ViewAssignment(), tag: 1, selection: $toAssignment) {
Button("Create New Task") {
let task: [String] = [taskName, dueDate, subject, weighting, totalMarks]
print(task)
self.toAssignment = 1
}
}
一定要用"NavigationView{…}">