SwiftUI 2.0 OutlineGroup 高級使用

基礎知識

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子組:一種視圖類型,將一個父視圖和一個代表其子視圖的視圖分組,通常具有一些用於顯示和隱藏子視圖的機制.

實戰代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章