SwiftUI-備忘錄列表完整功能清單
基礎列表創建
-
動態列表(Dynamic List)
- 使用
List(items)創建基本動態列表 - 定義符合
Identifiable協議的數據模型 - 實現自定義行視圖(HStack佈局)
- 添加導航標題和基本樣式
- 使用
-
靜態列表(Static List)
- 創建設置頁面風格的靜態列表
- 使用
Section分組內容 - 添加
Label組件(圖標+文字)
-
ForEach 模式
- 混合靜態和動態內容
- 在
List中嵌套ForEach - 處理多個數據源
-
自定義行視圖
- 提取複雜行視圖到獨立組件
- 實現多層級佈局(VStack + HStack)
- 添加條件顯示元素(如置頂圖標)
內置操作功能
-
刪除功能
- 添加
.onDelete修飾符 - 實現
deleteTask(at:)方法 - 配置工具欄
EditButton() - 處理
@State數據更新
- 添加
-
移動功能
- 添加
.onMove修飾符 - 實現
moveTask(from:to:)方法 - 支持長按拖拽重排序
- 在編輯模式下顯示拖拽把手
- 添加
-
ObservableObject 集成
- 創建
TaskManager類 - 使用
@Published屬性 - 實現
@StateObject和@ObservedObject
- 創建
自定義操作系統
-
數據模型擴展
- 為
TodoItem添加isPinned屬性 - 實現置頂排序邏輯
- 添加
dueDate等額外屬性
- 為
-
滑動操作(Swipe Actions)
- 實現右滑操作(刪除、置頂)
- 實現左滑操作(完成任務)
- 自定義操作按鈕顏色
- 動態按鈕文字(Pin/Unpin)
-
上下文菜單(Context Menu)
- 長按顯示操作菜單
- 添加多個操作選項
- 使用分隔線組織菜單
- 設置危險操作的紅色樣式
-
自定義按鈕操作
- 在行中添加始終可見的操作按鈕
- 實現切換完成狀態的按鈕
- 添加置頂按鈕交互
-
TaskManager 方法擴展
-
togglePin(for:)- 切換置頂狀態 -
toggleCompletion(for:)- 切換完成狀態 -
duplicateTask(_:)- 複製任務 -
addSampleTask()- 添加測試任務 -
sortedTasks- 計算屬性實現置頂排序 -
pinnedTasks/unpinnedTasks- 分類屬性
-
高級定製功能
-
列表樣式
-
.listStyle(.automatic)- 默認樣式 -
.listStyle(.grouped)- 分組樣式 -
.listStyle(.insetGrouped)- 內嵌分組 -
.listStyle(.plain)- 簡潔樣式 - 樣式選擇器實現
-
-
分隔線定製
-
.listRowSeparatorTint()- 自定義分隔線顏色 -
.listRowSeparator(.hidden)- 隱藏分隔線 - 實現自定義漸變分隔線
- 使用
Rectangle創建完全自定義分隔線
-
-
背景定製
-
.scrollContentBackground(.hidden)- 關鍵修飾符 -
ZStack實現自定義背景 -
LinearGradient漸變背景 -
.listRowBackground()- 行背景定製 -
.listRowInsets()- 行邊距調整 - 陰影效果添加
-
導航集成
-
基礎導航
-
NavigationStack替代NavigationView -
NavigationLink實現列表項導航 - 創建詳情頁面
TaskDetailView - 設置導航標題顯示模式
-
-
程序化導航
- 使用
NavigationPath管理導航狀態 -
.navigationDestination()處理不同類型導航 -
Button+ 程序化導航替代NavigationLink - 條件導航邏輯實現
- 使用
-
Master-Detail 導航
-
NavigationSplitView實現分屏導航 - 側邊欄(Master)和詳情(Detail)佈局
-
@State管理選中項狀態 -
ContentUnavailableView處理空狀態
-
-
搜索功能
-
.searchable()修飾符添加搜索欄 - 實現搜索過濾邏輯
-
ContentUnavailableView.search處理無結果狀態 - 搜索提示文字定製
-
完整應用集成
-
分區顯示
- 置頂任務單獨分區顯示
- 動態 Section 標題
- 條件顯示分區(空時隱藏)
-
編輯模式管理
- 自定義編輯狀態切換
-
.environment(\.editMode)環境值 - 動畫過渡效果
- 編輯模式下的操作限制
-
工具欄配置
-
ToolbarItem添加工具欄按鈕 - 編輯/完成按鈕切換
- 添加任務快捷按鈕
-
-
數據格式化
-
DateFormatter擴展 - 日期顯示樣式定製
- 文字刪除線效果
-
最佳實踐要點
-
狀態管理
- 正確使用
@Statevs@StateObjectvs@ObservedObject -
@Published屬性自動UI更新 - 避免直接修改傳遞的數據
- 正確使用
-
性能優化
- 複雜行視圖的提取
- 適當的數據結構選擇
- 計算屬性vs存儲屬性的權衡
-
用户體驗
- 滑動操作數量控制(2-3個最佳)
- 一致的顏色使用規範
- 動畫效果的合理應用
- 可發現性考慮(不是所有用户都知道滑動操作)