其他分享
首页 > 其他分享> > SwiftUI 简明教程之OutlineGroup、DiclosureGroupView

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 查看更多内容。

标签:Eul,isExpanded,Text,视图,DiclosureGroupView,SwiftUI,OutlineGroup
来源: https://www.cnblogs.com/bruce2077/p/14897096.html