- 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()
}
輸出
廣告