xcode - 按下按钮后尝试在 swiftUI 中移动到新视图
问题描述
我正在尝试创建一个能够创建和查看作业的应用程序。我有一个名为 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
将您的 Button("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 { ...}”中
推荐阅读
- php - 发送到多个电子邮件 swiftmail php
- sbt - SBT 在创建项目时要求提供凭据
- java - Spring Boot 配置文件中的嵌套变量替换
- javascript - 如何根据 onclick 函数获取两个输入字段值
- rest - Jenkins REST API 获取与特定作业相关的更改
- android - 当收到来自 Pusher 的推送通知时,Android 应用程序总是崩溃
- python - 我是 django-mptt 的新手,我想获取特定节点的后代。我正在创建一家药店
- sql - 无法使用 ; 将行数据转置为列 在甲骨文中分离
- node.js - 如何在 mongodb 中对嵌套的多边形数组执行邻近搜索?
- aframe - Aframe 可以做分屏效果显示两个场景吗?