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
相关产品推荐
相关产品推荐

