You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI如何让多个DisclosureGroup默认展开且支持单独折叠

解决方案

要实现所有DisclosureGroup默认展开且支持单独控制折叠/展开,你需要给每个分组绑定独立的状态变量,并默认设为展开状态。具体实现如下:

import SwiftUI

struct ContentView: View {
    // 原字符串列表
    @State private var myLists = ["list1", "list2", "list3"]
    // 存储每个分组的展开状态,默认全部设为true
    @State private var expandedStates: [String: Bool] = [:]
    
    var body: some View {
        List {
            ForEach(myLists, id: \.self) { myList in
                DisclosureGroup(
                    myList,
                    isExpanded: $expandedStates[myList, default: true]
                ) {
                    Text(myList)
                }
            }
        }
        // 页面加载时初始化所有分组为展开状态
        .onAppear {
            myLists.forEach { list in
                expandedStates[list] = true
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

核心逻辑说明:

  • 用字典expandedStates存储每个列表项的展开状态,键对应列表项字符串,值控制分组的展开/折叠
  • 通过onAppear在页面加载时,把所有列表项的状态设为true,保证默认全部展开
  • 将DisclosureGroup的isExpanded参数绑定到字典对应项的状态,实现每个分组的独立控制

内容的提问来源于stack exchange,提问作者dhaval123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 09:52:08