【凤凰社】SwiftUI 简明教程之OutlineGroup、DiclosureGroupView

本文为 Eul 样章,如果您喜欢,请移步 AppStore/Eul 查看更多内容。

Eul 是一款 SwiftUI & Combine 教程 App(iOS、macOS),以文章(文字、图片、代码)配合真机示例(Xcode 12+、iOS 14+,macOS 11+)的形式呈现给读者。笔者意在尽可可以使用简洁明了的语言阐述 SwiftUI & Combine 相关的知识,使读者可以快速掌握并在 iOS 开发中实践。

OutlineGroup

OutlineGroup 与前面章节提到的可展开列表类似,只是它的使用范围更广,我们不一定要在 List 中才可以实现可展开功可以。在任何一个 View 中,我们都可以用 OutlineGroup 实现可展开功可以。

同样以前面提到的树形结构的 weathers 为例:

OutlineGroup(expandWeather, children: \.weathers) { weather in
  Label(weather.name, systemImage: weather.icon)
}

这和之前 List 的使用方法几乎一模一样。

DiclosureGroupView

DiclosureGroupView 同样可以实现树形结构的展开/收拢,它使用起来更灵活,我们不必使用树形结构的数据源来构建视图。通过绑定的 isExpanded 属性,我们可以方便地控制视图的显示与隐藏。示例所示代码如下:

@State private var isExpanded = false

DisclosureGroup(isExpanded: $isExpanded, content: {
  Toggle("展开/收起", isOn: $isExpanded)
  DisclosureGroup("内嵌列表") {
    Text("Hello 1")
    Text("Hello 1")
    Text("Hello 1")
  }
}) {
  Text("Disclosure")
}

正如示例所示,OutlineGroupDiclosureGroupView 其实都是可以相互嵌套使用的,以实现更为复杂的层级视图。

本文为 Eul 样章,如果您喜欢,请移步 AppStore/Eul 查看更多内容。


0 评论

回复