SwiftUI 教程

SwiftUI 主页 SwiftUI 概览 SwiftUI 与 UIkit

SwiftUI 环境

SwiftUI 安装和环境配置 SwiftUI 基本组件 SwiftUI 构建第一个应用程序

SwiftUI 视图

SwiftUI 视图 SwiftUI 自定义文本视图 SwiftUI 自定义图像视图 SwiftUI 堆栈

SwiftUI 绘制形状

SwiftUI 形状 SwiftUI 绘制线条 SwiftUI 绘制矩形 SwiftUI 绘制圆角矩形 SwiftUI 绘制三角形 SwiftUI 绘制圆形 SwiftUI 绘制星形 SwiftUI 绘制多边形 SwiftUI 绘制饼图 SwiftUI 使用内置形状

SwiftUI 文本

SwiftUI 文本视图 SwiftUI 文本输入和输出

SwiftUI 颜色

SwiftUI 颜色 SwiftUI 颜色选择器 SwiftUI 渐变 SwiftUI 调整颜色

SwiftUI 效果

SwiftUI 效果 SwiftUI 混合效果 SwiftUI BLur 效果 SwiftUI 阴影效果 SwiftUI 悬停效果

SwiftUI 动画

SwiftUI 动画 SwiftUI 创建动画 SwiftUI 创建显式动画 SwiftUI 多个动画 SwiftUI 过渡 SwiftUI 不对称过渡 SwiftUI 自定义过渡

SwiftUI 图像

SwiftUI 图像 SwiftUI 图像作为背景 SwiftUI 旋转图像 SwiftUI 媒体

SwiftUI 视图布局

SwiftUI 视图布局 SwiftUI 视图大小 SwiftUI 视图间距 SwiftUI 视图填充

SwiftUI UI 控件

SwiftUI UI 控件 SwiftUI 按钮 SwiftUI 复选框 SwiftUI 菜单栏 SwiftUI 工具栏 SwiftUI 搜索栏 SwiftUI 文本字段 SwiftUI 滑块 SwiftUI 切换 SwiftUI 选择器 SwiftUI 菜单

SwiftUI 列表 &表格

SwiftUI 列表 SwiftUI 静态列表 SwiftUI 动态列表 SwiftUI 自定义列表 SwiftUI 表格

SwiftUI 表单

SwiftUI 表单 SwiftUI 在部分中拆分表单

SwiftUI 事件处理

SwiftUI 事件处理 SwiftUI 手势 SwiftUI 剪贴板 SwiftUI 拖放 SwiftUI 焦点 SwiftUI 警报

SwiftUI 杂项

SwiftUI 容器 SwiftUI 导航 SwiftUI 通知 SwiftUI 跨平台 UI SwiftUI 数据 SwiftUI 可访问性

SwiftUI 框架集成

SwiftUI 框架集成 SwiftUI 与 UIKit 交互 SwiftUI 创建 macOS 应用

SwiftUI 有用资源

SwiftUI 有用资源 SwiftUI 讨论


SwiftUI - 表单

SwiftUI 为表单提供了良好的支持。表单是用于在结构化界面中存储用户输入的容器。它们通常用于修改输入或数据的地方,例如联系人列表、设置等。就像列表一样,它也在垂直可滚动的列中显示数据。因此,在本章中,我们将学习如何创建表单、自定义表单以及有关表单的更多信息。

在 SwiftUI 中创建表单

在 SwiftUI 中,我们可以借助 From 组件创建表单。此组件包装了用于数据输入的所有控件,例如文本字段、切换、选择器等。通过这些控件,我们可以在表单中添加数据。它在垂直滚动列表中显示数据。

语法

以下是语法 −

Form{
   // Form Content
}

示例

以下 SwiftUI 程序创建了一个简单的表单。

import SwiftUI
struct ContentView: View {
   var body: some View {
     Form{
       Text("Name")
       Text("Email")
       Text("Date")
     }
   }
}   
#Preview {
   ContentView()
}

输出

Form

在 SwiftUI 中的表单中添加控件

为了使表单更具吸引力和用户友好性,我们可以在其中添加多个预定义控件。它们增强了表单的外观,还允许用户根据自己的需求输入数据。在表单中,您可以使用以下控件输入数据−

控件 语法 说明
TextField TextField("Label", text: Binding<String>) 用于创建一个文本字段,用户可以在其中输入字符串。
TextEditor TextEditor(text: Binding<String>) 用于插入文本编辑器。文本编辑器用于在表单中插入长文本,如摘要、说明、消息等。
Toggle Toggle(isOn: Binding<String>) 它用于创建一个切换按钮,或者我们可以说它用于创建一个开/关按钮。它始终表示布尔值 true 或 false。
Button Button("Label", action:) 它用于创建一个按钮。
Pickers Picker("Label", choice:Binding<String>) 它用于创建一个列表,我们可以从中选择项目。

示例

以下 SwiftUI 程序用于在表单中添加控件 −

import SwiftUI
struct ContentView: View {
   @State private var name: String = ""
   @State private var email: String = ""
   @State private var about: String = "Write about yourself..."
   @State private var notification = false
   @State private var city: String = "Delhi"

   var body: some View {
     Form{
       TextField("Enter Name", text: $name)
       TextField("Enter Email", text: $email)
       TextEditor(text: $about)
       Toggle("Notification", isOn: $notification)
       Picker("City", selection:$city){
         ForEach(["Delhi", "Mumbai", "Pune", "Kolkata"], id: \.self){
            s in Text(s)
         }
       }
       Button("Submit", action:{
         print("Submitted")
       })       
     }
   }
}   
#Preview {
   ContentView()
}

输出

Form

在 SwiftUI 中的表单中添加导航标题

每个表单、列表或表格都需要一个合适的标题来标识它们。因此,在表单中,我们可以借助 NavigationStack 设置标题。NavigationStack 结构环绕 Form 组件并提供 navigationTitle() 修饰符,允许我们设置表单的标题。虽然我们也可以使用 VStack 和 Text 设置表单的标题,但 NavigationStack 仍然是创建标题并为表单提供附加功能的最有效和最直接的方法。

语法

以下是语法 −

NavigationStack{
   Form{
   // Form Content
   }
}.navigationTitle("Form Title")

示例

以下 SwiftUI 程序用于使用 NaivationStack 插入表单标题。

import SwiftUI

struct ContentView: View {
   @State private var name: String = ""
   @State private var email: String = ""
   @State private var about: String = "Write about yourself..."
   @State private var notification = false
   @State private var city: String = "Delhi"

   var body: some View {
     NavigationStack{
       Form{
         TextField("Enter Name", text: $name)
         TextField("Enter Email", text: $email)
         TextEditor(text: $about)
         Toggle("Notification", isOn: $notification)
         Picker("City", selection:$city){
            ForEach(["Delhi", "Mumbai", "Pune", "Kolkata"], id: \.self){
              s in Text(s)
            }
         }
         Button("Submit", action:{
            print("Submitted")
         })
       }.navigationTitle("Employee Data")
     }
   }
}   
#Preview {
   ContentView()
}

输出

Form

在 SwiftUI 中设置表单样式

SwiftUI 允许我们借助 formStyle() 修饰符来设置表单样式。此修饰符以三种不同模式更改表单的外观和行为:自动、分组和列。我们可以根据需要选择任何一种模式。

语法

以下是语法 −

func formStyle<S>(_ style: S) -> some View where S : FormStyle

它只接受一个参数,即我们想要应用的样式,预定义的样式如下 −

  • automatic: 它应用默认的系统表单样式。

  • columns: 它创建一个非滚动表单,其中标签的尾部对齐列紧挨着其值的前部对齐列。

  • grouped: 它创建行的组表单。

示例

以下 SwiftUI 程序用于使用 formStyle() 修饰符设置表单样式。

import SwiftUI

struct ContentView: View {
   @State private var name: String = ""
   @State private var email: String = ""
   @State private var about: String = "Write about yourself..."
   @State private var notification = false
   @State private var city: String = "Delhi"

   var body: some View {
     NavigationStack{
       Form{
         TextField("Enter Name", text: $name)
         TextField("Enter Email", text: $email)
         TextEditor(text: $about)
         Toggle("Notification", isOn: $notification)
         Picker("City", selection:$city){
            ForEach(["Delhi", "Mumbai", "Pune", "Kolkata"], id: \.self){
              s in Text(s)
            }
         }
         Button("Submit", action:{
            print("Submitted")
         })
       }.navigationTitle("Employee Data").formStyle(.automatic)
     }
   }
}   
#Preview {
   ContentView()
}

输出

Form