Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 动态列表与静态列表

动态列表与静态列表

在 SwiftUI 中,列表(List)可以分为动态列表和静态列表。动态列表是根据数据源动态生成的,而静态列表则是在代码中定义好的固定元素。以下是对这两种列表的详细介绍和示例。

1. 静态列表

静态列表适用于内容不需要变化的情况,通常用于显示固定的视图元素。

1.1 创建静态列表

使用 List 直接定义一组静态内容。

示例:静态列表

import SwiftUI

struct StaticListExample: View {
    var body: some View {
        List {
            Text("Item 1") // 静态项
            Text("Item 2")
            Text("Item 3")
        }
        .navigationTitle("Static List") // 设置导航栏标题
    }
}

1.2 使用 Section 分组

静态列表还可以使用 Section 来分组显示内容。

示例:分组静态列表

struct GroupedStaticListExample: View {
    var body: some View {
        List {
            Section(header: Text("Fruits")) {
                Text("Apple") // 静态项
                Text("Banana")
            }
            Section(header: Text("Vegetables")) {
                Text("Carrot")
                Text("Lettuce")
            }
        }
        .navigationTitle("Grouped Static List") // 设置导航栏标题
    }
}

2. 动态列表

动态列表则是基于可变的数据源生成的,适用于需要根据用户交互或数据变化来更新内容的情况。

2.1 创建动态列表

通过数组或集合来生成动态内容。

示例:动态列表

struct DynamicListExample: View {
    let items = ["Apple", "Banana", "Cherry"] // 数据源

    var body: some View {
        List(items, id: \.self) { item in
            Text(item) // 动态生成列表项
        }
        .navigationTitle("Dynamic List") // 设置导航栏标题
    }
}

2.2 使用 @State 进行动态更新

通过结合 @State 属性,实现动态数据更新。

示例:动态更新的列表

struct UpdatableDynamicListExample: View {
    @State private var items = ["Apple", "Banana", "Cherry"] // 可变数据源

    var body: some View {
        VStack {
            List(items, id: \.self) { item in
                Text(item) // 显示动态项
            }
            Button("Add Item") {
                items.append("New Item") // 添加新项
            }
            .padding()
        }
        .navigationTitle("Updatable Dynamic List") // 设置导航栏标题
    }
}

3. 比较静态列表与动态列表

特性静态列表动态列表
数据源固定、不可变的数据动态数据,可能随着时间或用户操作变化
性能性能较好,渲染开销小性能要求较高,尤其是数据量大的时候
更新频率数据不更新数据频繁更新,如增删改查等操作
实现复杂度实现简单实现相对复杂,需要处理数据源更新、UI 更新等
适用场景内容固定且不需要更新的页面内容动态变化,需要频繁更新的页面
常用视图组件List 或 VStack 等List 和 ForEach 等

4. 总结

静态列表:适用于显示固定内容,简单直接,使用 List 定义静态项或分组。 动态列表:适合显示可变内容,结合数组或集合生成,支持动态更新,使用 @State 管理数据。 通过理解和使用动态列表与静态列表,你可以在 SwiftUI 应用中更灵活地展示数据,提高用户体验。

Last Updated:: 11/5/24, 4:03 PM