在SwiftUI中,可以使用以下方法在不同视图中保存列表:
示例代码:
struct ContentView: View {
@State private var items: [String] = []
var body: some View {
VStack {
List(items, id: \.self) { item in
Text(item)
}
.padding()
AddItemView(items: $items)
}
}
}
struct AddItemView: View {
@Binding var items: [String]
@State private var newItem: String = ""
var body: some View {
VStack {
TextField("Enter item", text: $newItem)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
Button("Add Item") {
items.append(newItem)
newItem = ""
}
.padding()
}
}
}
在上面的示例中,ContentView
视图包含一个列表和一个AddItemView
视图。items
属性使用@State
包装器来保存列表数据。AddItemView
视图使用@Binding
属性包装器来读取和修改父视图中的items
属性。
示例代码:
class ItemStore: ObservableObject {
@Published var items: [String] = []
}
struct ContentView: View {
@ObservedObject var itemStore = ItemStore()
var body: some View {
VStack {
List(itemStore.items, id: \.self) { item in
Text(item)
}
.padding()
AddItemView(itemStore: itemStore)
}
}
}
struct AddItemView: View {
@ObservedObject var itemStore: ItemStore
@State private var newItem: String = ""
var body: some View {
VStack {
TextField("Enter item", text: $newItem)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
Button("Add Item") {
itemStore.items.append(newItem)
newItem = ""
}
.padding()
}
}
}
在上面的示例中,ItemStore
类是一个ObservableObject,其中包含一个@Published
属性items
来保存列表数据。ContentView
视图使用@ObservedObject
属性包装器来观察itemStore
实例。AddItemView
视图也使用@ObservedObject
属性包装器来观察相同的itemStore
实例。
这些方法可以在SwiftUI中保存列表数据,并在不同视图之间共享。您可以根据实际需求选择适合您的方法。
领取专属 10元无门槛券
手把手带您无忧上云