首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在SwiftUI的不同视图中保存列表

在SwiftUI中,可以使用以下方法在不同视图中保存列表:

  1. 使用@State属性包装器:@State属性包装器用于在视图之间共享和保存数据。您可以在父视图中创建一个@State属性,并将其传递给子视图。子视图可以读取和修改该属性,以便在不同视图之间保存列表数据。

示例代码:

代码语言:txt
复制
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属性。

  1. 使用@ObservableObject和@Published属性包装器:如果需要在多个视图之间共享和保存列表数据,可以使用ObservableObject协议和@Published属性包装器。首先,创建一个ObservableObject类,并在其中声明一个@Published属性来保存列表数据。然后,在需要访问该数据的视图中,使用@ObservedObject属性包装器来观察该ObservableObject实例。

示例代码:

代码语言:txt
复制
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中保存列表数据,并在不同视图之间共享。您可以根据实际需求选择适合您的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

6分33秒

048.go的空接口

18秒

四轴激光焊接示教系统

56秒

PS小白教程:如何在Photoshop中给灰色图片上色

1时29分

企业出海秘籍:如何以「稳定」产品提升留存,以AIGC「创新」实现全球增长?

5分24秒

IC测试座工程师:汽车电子二极管、三极管封装特性与测试方法

1分2秒

BOSHIDA DC电源模块在家用电器中的应用

1分0秒

激光焊锡示教系统

1分2秒

DC电源模块在仪器仪表中应用

1分5秒

BOSHIDA DC电源模块在医疗设备中应用

58秒

DC电源模块在通信仪器中的应用

59秒

BOSHIDA DC电源模块在工业自动化中的应用

48秒

DC电源模块在传输过程中如何减少能量的损失

领券