基礎知識
OutlineGroup 是什麼
OutlineGroup是一種struct結構,可按照需求計算和組合集合中的identified類型元素,進行大綱式顯示。
struct OutlineGroup<Data, ID, Parent, Leaf, Subgroup> where Data : RandomAccessCollection, ID : Hashable
使用教程
當您需要一個可以使用公開視圖表示數據層次結構的視圖時,請使用大綱組。 這允許用戶通過使用公開視圖來展開和摺疊分支來導航樹結構。
在以下示例中,FileItem數據的樹結構提供了文件系統的簡化視圖。 傳遞此樹的根及其子代的關鍵路徑可以使您快速創建文件系統的直觀表示
struct FileItem: Hashable, Identifiable, CustomStringConvertible {
var id: Self { self }
var name: String
var children: [FileItem]? = nil
var description: String {
switch (children) {
case nil:
return "📄 \(name)"
case .some(let children):
return children.count > 0 ? "📂 \(name)" : "📁 \(name)"
}
}
}
let data =
FileItem(name: "users", children:
[FileItem(name: "user1234", children:
[FileItem(name:"Photos", children:
[FileItem(name: "photo001.jpg"),
FileItem(name: "photo002.jpg")]),
FileItem(name:"Movies", children:
[FileItem(name: "movie001.mp4")]),
FileItem(name:"Documents", children: [])
]),
FileItem(name: "newuser", children:
[FileItem (name: "Documents", children: [])
])
])
OutlineGroup(data, children: \.children) { item in
Text ("\(item.description)")
}
類型參數
五個通用類型約束定義一個特定的OutlineGroup實例:
- Data數據:包含樹形數據中元素子元素的集合的類型。
- ID:元素標識符的類型。
- Parent父級:子元素屬性爲非null的元素的視覺表示類型。
- Leaf葉子:子元素屬性爲nil的元素的視覺表示類型。
- SubGroup子組:一種視圖類型,將一個父視圖和一個代表其子視圖的視圖分組,通常具有一些用於顯示和隱藏子視圖的機制.