SwiftUI中Sidebar列表样式不生效问题求助
问题原因
在iOS 16及以上版本中,.sidebar样式的List不会自动为Section生成展开/收起按钮。系统的设计逻辑是:只有当你为Section显式绑定了isExpanded状态变量时,才会显示展开按钮,以此让开发者完全控制折叠展开的行为。你的代码里没有给Section绑定这个状态,所以不会出现展开按钮。
解决方案
步骤1:添加状态变量控制展开状态
在视图中声明一个@State变量,用来存储Section的展开状态。
步骤2:为Section绑定展开状态
将这个状态变量绑定到Section的isExpanded参数上。
修改后的完整代码:
import SwiftUI struct ListTestView: View { // 声明状态变量,初始值设为true表示默认展开 @State private var isSectionExpanded = true var body: some View { List { Section( content: { Text("...") Text("...") Text("...") Text("...") }, header: { Text("Header") .textCase(nil) }, isExpanded: $isSectionExpanded // 绑定展开状态 ) } .listStyle(.sidebar) } } #Preview { ListTestView() }
额外说明
- 如果需要默认收起Section,只需把
isSectionExpanded的初始值改为false。 - 若存在多个Section,为每个Section单独声明一个
@State变量并绑定即可实现各自独立的折叠展开控制。
内容的提问来源于stack exchange,提问作者Hoyeon Lee
相关产品推荐
相关产品推荐

