如何解决List ForEach 未正确更新
我正在使用 Core data 和 Swiftui,一切正常,但在这个视图中,我有一个 List 和 ForEach 不起作用。
所以为了测试目的,我的代码目前看起来像这样:
@Observedobject var viewmodel = NewLearningWhyviewmodel()
vstack {
ForEach(viewmodel.whys,id: \.self) { why in
Text(why.why)
}
List {
ForEach(viewmodel.whys,id: \.self) { why in
Text(why.why)
}
}
Button(action: {
viewmodel.createWhy(why: "Test",count: viewmodel.whys.count,learning: learn)
viewmodel.fetchWhy(predicate: nspredicate(format: "parentLearning == %@",learn))
}){
Text("Add")
.font(.title)
.foregroundColor(.white)
}
}
问题是我的列表 { ForEach,我第一次按下添加按钮时会显示新的原因,第二次按下按钮时整个列表消失了,第三次按下按钮时列表再次显示所有 3 个项目.
为了测试这个问题,我添加了第一个 ForEach 部分并始终显示正确的项目,因此视图模型或添加项目没有问题,项目被添加并从视图模型发布部分已更新。
有谁知道为什么我的 List { ForEach 只每隔一次显示一次?
解决方法
我遇到了这个问题。我通过在 ViewModel 中添加 objectWillChange
来解决这个问题,并在您的 why
更改时手动发送()它。其实我不太清楚你的NewLearningWhyViewModel
,所以这只是一个例子,你应该试试。
class NewLearningWhyViewModel: ObservableObject {
let objectWillChange: ObservableObjectPublisher = ObservableObjectPublisher()
@Published var whys: Why = Why() {
didSet {
objectWillChange.send()
}
}
}
,
好的,来自 Becky Hansmeyer 的帖子解决了它,将 .id(UUID()) 添加到列表中解决了它并且它开始正常工作......
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。