swiftui - 更改 SwiftUI OutlineGroup 中的数据
问题描述
我正在尝试使用新的 SwiftUIOutlineGroup
来显示可扩展的树。我在我的应用程序中尝试了这个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] [General] NSOutlineView 插入子索引时出错 <_NSCachedIndexSet: 0x600000760ea0>[索引数:1(在 1 个范围内),索引:(3)] 在父 0x0(有 1 个孩子)。
如何在不崩溃的情况下更改树模型?
解决方案
推荐阅读
- swift - 如何从以流明表示的“ambientIntensity”中获取 Lux 值?
- c - 等待字符串中的字符
- jsf - 在rich:fileUpload 中,如果用户超过了最大上传限制,那么我们如何显示一个弹出消息来说明这一点
- python - 如何连接使用内存映射 IO 填充的两个 TIFF 文件
- python - 更改一个特定的表单字段时,HTML 表单行消失
- postgresql - 如何将数据库模式从数据库 A 复制到数据库 B
- sql - 将值传递给 sql 子请求
- python - 如何使用 python 从 MySQL 下载 BLOB .docx 文件?
- ios - 如何在 Apple Pay PKPayment 对象数据中获取 ephemeralPublicKey 而不是 WrappedKey 和 EC_v1 而不是 RSA_v1
- arrays - Swift:无法将结构实例附加到数组