问题描述
我正在尝试使用新的SwiftUI OutlineGroup
来显示可扩展树。我在应用程序的ContentView
中尝试过:
struct ContentView: View {
@EnvironmentObject var store: MyDataStore
var body: some View {
List {
OutlineGroup(store.navRoot,children: \.children) { item in
Text(item.name)
}
}
}
商店的代码和试图更改树数据的命令处理程序:
// Clicking menu button calls this
private func newProject() {
var new = LeftNavNode(id: UUID(),name: "Foo")
store.navRoot.children!.append(new)
}
...
class MyDataStore: ObservableObject {
@Published var navRoot = LeftNavNode(id: projectsID,name: "Projects",children: [
LeftNavNode(id: UUID(),name: "Project1"),LeftNavNode(id: UUID(),name: "Project2")
])
}
struct LeftNavNode: Identifiable {
let id: UUID
let name: String
var children: [LeftNavNode]? = nil
}
它可以显示静态数据,但是当我向树中添加时,出现错误。状态发生变化,视图重新渲染,我明白了:
2020-09-20 15:08:24.991604-0400 MyArchives [32728:584579] [常规] NSOutlineView错误插入子索引<_nscachedindexset> [索引数:1(在1个范围内),索引:(3 )]的父级0x0(有1个子级)。
如何在不崩溃的情况下更改树模型?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)