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

数组更改时SwiftUI列表不更新

在SwiftUI中,当数组发生更改时,列表(List)默认情况下不会自动更新。这是因为SwiftUI使用了值语义,即当数组的值发生更改时,SwiftUI无法检测到具体的更改操作。

要解决这个问题,可以使用SwiftUI中的@State属性包装器来创建一个可观察的状态变量。当数组发生更改时,通过更改状态变量的值来触发列表的更新。

下面是一个示例代码:

代码语言:txt
复制
import SwiftUI

struct ContentView: View {
    @State private var items = ["Item 1", "Item 2", "Item 3"]

    var body: some View {
        List(items, id: \.self) { item in
            Text(item)
        }
        .onAppear {
            DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
                self.items.append("Item 4")
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

在这个示例中,我们使用了@State属性包装器来创建一个可观察的状态变量items,并将其用作列表的数据源。当items数组发生更改时,列表会自动更新。

onAppear闭包中,我们使用了DispatchQueue.main.asyncAfter方法来模拟数组的更改。在2秒后,我们向items数组中添加了一个新的元素。

这样,当数组发生更改时,列表会自动更新,显示新添加的元素。

推荐的腾讯云相关产品:腾讯云云服务器(CVM),产品介绍链接地址:https://cloud.tencent.com/product/cvm

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

相关·内容

领券