我在大纲视图中有大约1500个项目的列表,每个项目的子项由API调用确定,因为API仅向我提供没有子项的所有父项。
因为它是1500项,所以我无法请求每个父项在应用程序启动时列出它们的子项,因此我更愿意返回numberOfChildrenOfItem
,因为它是在用户扩展项目后调用的,因为Web请求之后的项目完成
我的API如何工作的示例代码:
func outlineView(_ outlineView: NSOutlineView, numberOfChildrenOfItem item: Any?) -> Int {
// code to determine if root or parent
} else if parent {
api.updateDatabaseChildren(for: parent) {
// database has been updated and parent now has children
}
}
}
我真的无法解决这个问题,我该怎么做?
首先让你的数据源为每个父级的1
返回numberOfChildrenOfItem
,为true
返回isExpandable
。
对于尚未加载其子项的每个父项中的子项,请提供显示“正在加载...”之类的虚拟项:
> Parent
> Parent
v Parent
Loading...
> Parent
当用户展开父项时,从API异步加载其子项。收到结果后,使用insertItems()
将子项插入其父项。