在Web请求后返回NSOutlineView的numberOfChildrenOfItem

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

我在大纲视图中有大约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
        }
    }

}

我真的无法解决这个问题,我该怎么做?

swift cocoa appkit nsoutlineview
1个回答
1
投票

首先让你的数据源为每个父级的1返回numberOfChildrenOfItem,为true返回isExpandable

对于尚未加载其子项的每个父项中的子项,请提供显示“正在加载...”之类的虚拟项:

> Parent
> Parent
v Parent
     Loading...
> Parent

当用户展开父项时,从API异步加载其子项。收到结果后,使用insertItems()将子项插入其父项。

© www.soinside.com 2019 - 2024. All rights reserved.