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

SwiftUI中EditButton()的展开/折叠功能是否已被移除?

SwiftUI List 编辑模式下的展开/折叠 Chevron 问题

这个展开/折叠的Chevron功能并没有被移除,只是实现逻辑在SwiftUI的更新中发生了变化——旧版本里Section会在编辑模式下自动显示折叠控件,但现在需要手动绑定折叠状态才能触发这个效果。

你的代码里没有给Section设置折叠状态的绑定,所以即使打开编辑模式,也不会显示Chevron。按照下面的步骤修改就能恢复这个功能:

  1. 添加两个@State变量,分别记录两个Section的折叠状态:
@State private var isFruitsSectionCollapsed = false
@State private var isVeggiesSectionCollapsed = false
  1. 给每个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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 15:15:17