iOS App 从 0 到 1

列表与导航

List、NavigationStack、传参——多页面 App 的骨架。

1List 与 ForEach

struct Item: Identifiable {
  let id = UUID()
  var title: String
}

struct HomeView: View {
  @State private var items = [
    Item(title: "买牛奶"),
    Item(title: "提交 PR")
  ]
  var body: some View {
    List {
      ForEach(items) { item in
        Text(item.title)
      }
      .onDelete { items.remove(atOffsets: $0) }
    }
  }
}
模型实现 Identifiable(或 ForEach 指明 id)。用数组下标当 id 会在增删后乱刷新。

3TabView 底栏

TabView {
  HomeView()
    .tabItem { Label("首页", systemImage: "list.bullet") }
  SettingsView()
    .tabItem { Label("设置", systemImage: "gear") }
}
真实问题:返回后列表位置丢了 / 状态重置
检查是否在 body 里每次都 TodoStore() 新建。Store 应放在 @State 或上层 App 里持有。

iOS App 从 0 到 1 · 主讲 SwiftUI / iOS