列表与导航
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 里持有。