SwiftUI:如何从 OutlineGroup 获取选择?

标签 swiftui swiftui-outlinegroup

OutlineGroup类似于 NSOutlineView . NSOutlineView支持单/多节点选择,我们可以通过查询NSOutlineView获得它们。 .虽然在 NSOutlineView 上获得选择是 O(n),但如果 View 跟踪选择并在适当的界面中提供它们,则可以将其优化为 O(1)。
如何从 OutlineGroup 获取选择?特别是对于多节点选择。我签了 the manual entry ,但找不到任何关于选择的提及。我在这里错过了什么?

最佳答案

文档看起来并没有完全完成。在 Xcode 12 中使用直接 SwiftUI 自动生成的界面来查找更新。
特别是问OutlineGroup有几个构造函数 selection参数,如下:

/// 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

关于SwiftUI:如何从 OutlineGroup 获取选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62546266/

相关文章:

ios - 仅当父 VStack 位于 SwiftUI 中的列表内时,才会触发按钮的多个操作处理程序

swift - SwiftUI 中 View 的大小

json - 如何在 swiftUI 中显示 JSON 数据

swiftui - 测量 SwiftUI View 的渲染大小?

macos - 如何让 SwiftUI List/OutlineGroup 懒惰地用于像文件系统这样的大树?

swiftui - 如何在 SwiftUI 中放松到 MainView