SwiftUI 中的可搜索和可刷新视图在 ObservableObject 更改时出现故障

问题描述 投票:0回答:1

我有一个 SwiftUI

List
,它应该有一个搜索栏并启用拉动刷新。

理论上来说,这非常简单。但是,每当我更新

@Published
代码中的任何
.refreshable { }
属性时,都会出现搜索栏错误。

我的观点是这样的:

struct MyView: View {
    @State var text = ""

    var body: some View {
        NavigationView {
           List {
               Text("hello")
           }
           .refreshable {
               model.prop = "world"
           }
        }
        .searchable(text: $text)
    }
}

我的模型看起来像这样:

class Model: ObservableObject {
    @Published var prop = ""
}

我尝试将更新放入异步块中,但没有解决问题:

DispatchQueue.main.async {
    model.prop = "world"
}

ObservableObject
块内的任何非
.refreshable { }
变异代码都可以正常工作。

我做错了什么吗?

enter image description here

ios swift swiftui swiftui-list
1个回答
0
投票

这种方法解决了动画错误,但也强制您的导航栏始终显示搜索栏

.searchable(text: $viewModel.searchText, placement: .navigationBarDrawer(displayMode: .always))
© www.soinside.com 2019 - 2024. All rights reserved.