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自动生成接口查找更新
特别是对于askOutlineGroup
有几个构造函数具有选择
参数,如下所示:
/// 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。这如何使大纲组可选择?没有子项的项目被包装在导航链接中。有人有解决该问题的方法吗?请在这里发布。回答从另一个问题。