SwiftUI中EditButton()的展开/折叠功能是否已被移除?
SwiftUI List 编辑模式下的展开/折叠 Chevron 问题
这个展开/折叠的Chevron功能并没有被移除,只是实现逻辑在SwiftUI的更新中发生了变化——旧版本里Section会在编辑模式下自动显示折叠控件,但现在需要手动绑定折叠状态才能触发这个效果。
你的代码里没有给Section设置折叠状态的绑定,所以即使打开编辑模式,也不会显示Chevron。按照下面的步骤修改就能恢复这个功能:
- 添加两个
@State变量,分别记录两个Section的折叠状态:
@State private var isFruitsSectionCollapsed = false @State private var isVeggiesSectionCollapsed = false
- 给每个Section添加
.collapsible修饰符,绑定对应的状态变量:
// Fruits Section 部分 Section(header: HStack { Text("Fruits") Image(systemName: "flame.fill") } .font(.headline) .foregroundStyle(Color.orange) ) { // 原有ForEach及操作逻辑 } .collapsible($isFruitsSectionCollapsed) // Veggies Section 部分 Section(header: Text("Veggies").foregroundStyle(Color.blue)) { // 原有ForEach逻辑 } .collapsible($isVeggiesSectionCollapsed)
如果希望只有在编辑模式下才显示Chevron,可以结合环境变量editMode来控制折叠功能的启用:
@Environment(\.editMode) private var editMode // 修改Section的collapsible修饰符: .collapsible(editMode?.wrappedValue == .active ? $isFruitsSectionCollapsed : nil)
这样点击EditButton进入编辑模式后,每个Section的标题右侧就会出现可点击的Chevron,用来展开或折叠对应板块;退出编辑模式后,Chevron会自动隐藏。
内容的提问来源于stack exchange,提问作者Yakimasy
相关产品推荐
相关产品推荐

