SwiftUI:如何从OutlineGroup中获取选择?

SwiftUI:如何从OutlineGroup中获取选择?,swiftui,swiftui-outlinegroup,Swiftui,Swiftui Outlinegroup,OutlineGroup与NSOutlineView类似NSOutlineView支持单/多节点选择,我们可以通过查询NSOutlineView获取。虽然在NSOutlineView上获得选择是O(n),但如果视图跟踪选择并在适当的界面中提供它们,则可以将其优化为O(1) 如何从OutlineGroup中获取选择?特别是对于多个节点选择。我退房了,但找不到任何关于选择的信息。我在这里遗漏了什么?文档并不像看上去那样完整。使用Xcode 12中的直接SwiftUI自动生成接口查找更新 特别是对于a

OutlineGroup
NSOutlineView
类似
NSOutlineView
支持单/多节点选择,我们可以通过查询
NSOutlineView
获取。虽然在
NSOutlineView
上获得选择是O(n),但如果视图跟踪选择并在适当的界面中提供它们,则可以将其优化为O(1)


如何从
OutlineGroup
中获取选择?特别是对于多个节点选择。我退房了,但找不到任何关于选择的信息。我在这里遗漏了什么?

文档并不像看上去那样完整。使用Xcode 12中的直接SwiftUI自动生成接口查找更新

特别是对于ask
OutlineGroup
有几个构造函数具有
选择
参数,如下所示:

/// Creates a hierarchical list that computes its rows on demand from an
/// underlying collection of identifiable data, optionally allowing users to
/// select multiple rows.
///
/// - Parameters:
///   - data: The identifiable data for computing the list.
///   - selection: A binding to a set that identifies selected rows.
///   - rowContent: A view builder that creates the view for a single row of
///     the list.
@available(iOS 14.0, OSX 10.16, *)
@available(tvOS, unavailable)
@available(watchOS, unavailable)
public init<Data, RowContent>(_ data: Data, children: KeyPath<Data.Element, Data?>, 
    selection: Binding<Set<SelectionValue>>?, @ViewBuilder rowContent: @escaping (Data.Element) -> RowContent) where Content == OutlineGroup<Data, Data.Element.ID, HStack<RowContent>, HStack<RowContent>, DisclosureGroup<HStack<RowContent>, OutlineSubgroupChildren>>, Data : RandomAccessCollection, RowContent : View, Data.Element : Identifiable
///创建一个分层列表,根据需要从
///可识别数据的基础集合,可选地允许用户
///选择多行。
///
///-参数:
///-数据:用于计算列表的可识别数据。
///-选择:对标识选定行的集合的绑定。
///-rowContent:一个视图生成器,用于为一行内容创建视图
///名单。
@可用(iOS 14.0、OSX 10.16、*)
@可用(电视操作系统,不可用)
@可用(watchOS,不可用)
public init(uData:data,children:KeyPath,
选择:Binding?,@ViewBuilder rowContent:@escaping(Data.Element)->rowContent,其中Content==OutlineGroup,Data:RandomAccessCollection,rowContent:View,Data.Element:可识别

对于没有子项的项目,您需要放置导航链接/按钮

以下是基于苹果源代码的外观

var body: some View {
    OutlineGroup(data, children: \.children) { item in
        Group {
            if item.children == nil {
                NavigationLink(
                    destination: Text("\(item.name)"),
                    label: {
                        Text ("\(item.description)")
                    })
            } else {
                Text ("\(item.description)")
            }
        }
    }
}
数据来自一个苹果。有时链接会断开。下面是源代码:

struct FileItem:可散列、可识别、可自定义{
变量id:Self{Self}
变量名称:String
变量子项:[FileItem]?=nil
变量说明:字符串{
开关(儿童){
无案例:

return“我在自动生成的界面上找不到这个。你在macOS 11(测试版)上检查过这个吗?”?我仍在macOS 10.xIt上。似乎
大纲组
需要成为
列表的内容
@Eonil,不,我已经在macOS 10.15.5上安装了Xcode 12b。这如何使大纲组可选择?没有子项的项目被包装在导航链接中。有人有解决该问题的方法吗?请在这里发布。回答从另一个问题。