- SwiftUI 教程
- SwiftUI - 首页
- SwiftUI - 概述
- SwiftUI vs 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 - 模糊效果
- 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 - 讨论
SwiftUI - 动态列表
在 SwiftUI 中,动态列表是一个其数据可以动态更改的列表。每当底层数据发生更改时,它都会自动更新并重新渲染。iOS 的联系人列表和消息框列表是动态列表的常见现实示例,它们会在添加新联系人或向列表中添加新消息时发生变化。因此,在本节中,我们将学习如何在 SwiftUI 中创建动态列表以及更多关于动态列表的内容。
在 SwiftUI 中创建动态列表
SwiftUI 提供预定义的 List 视图来创建静态和动态列表。它以单列垂直可滚动列的行显示数据。这是存储数据而不必知道数据集实际长度的理想方式。因此,我们使用数组、结构体、集合等数据源创建动态列表,并且每当数据源使用 ForEach 视图更新时,列表都会自动更新。ForEach 视图用于迭代给定的元素集合并唯一标识每个元素。
语法
以下是语法:
List{ ForEach(dataSource, id: \.self){ item in Text(item) } }
示例
以下 SwiftUI 程序用于创建动态列表。
import SwiftUI struct ContentView: View { @State var elements = ["Python", "C++", "Swift", "C", "Java"] var body: some View { // Creating a dynamic list List(elements, id: \.self){language in Text(language) } } } #Preview { ContentView() }
输出
在 SwiftUI 中的动态列表中添加项目
有多种方法可以在动态列表中添加项目,但在这里我们将使用 TextField 输入新项目,并使用 .append 修饰符在用于创建动态列表的给定数组中添加新值。
import SwiftUI struct ContentView: View { @State private var elements = ["Python", "C++", "Swift", "C", "Java"] @State private var lang = "" var body: some View { Text("Programming Languages").font(.title) // Creating a dynamic list List(elements, id: \.self){language in Text(language) } TextField("Add Langugae", text: $lang).onSubmit { if lang.isEmpty{ elements.append(lang) lang = "" } }.padding() } } #Preview { ContentView() }
输出
从 SwiftUI 中的动态列表中删除项目
要从动态列表中删除项目,我们必须从底层数据源中删除数据,并且更改将自动反映在列表中。因此,我们使用 onDelete(perform:) 修饰符启用滑动删除手势,它允许用户从动态列表中删除项目。在这里,我们使用数组作为数据源,因此 onDelete() 修饰符使用 remove(at:) 方法从数组中删除元素。
import SwiftUI struct ContentView: View { @State private var elements = ["Python", "C++", "Swift", "C", "Java"] var body: some View { VStack { Text("Programming Languages") .font(.title) // Creating a dynamic list with swipe-to-delete functionality List { ForEach(elements, id: \.self) { language in Text(language) } .onDelete(perform: deleteElements) } .padding() } } // Function to delete selected elements func deleteElements(at offsets: IndexSet) { elements.remove(atOffsets: offsets) } } #Preview { ContentView() }
输出
广告