NavigationSplitView侧边栏多列表分段仅显示单个项问题
问题原因与解决方案
错误根源
你在Section内部嵌套了List组件,这违反了SwiftUI的列表结构逻辑:Section是List的分组容器,仅用于包裹行元素(如Text、Button等),而非嵌套另一个完整的List。内层List会被当作单个行元素渲染,所以每个分段下只显示了一个容器视图,而非所有数字条目。
修正代码
将内层的List替换为ForEach即可解决问题,ForEach是SwiftUI中用于批量生成视图的正确结构:
import SwiftUI struct ContentView: View { var body: some View { NavigationSplitView { List { Section("Test 1") { ForEach(0...20, id: \.self) { i in Text("\(i)") } } Section("Test 2") { ForEach(21...50, id: \.self) { i in Text("\(i)") } } } .listStyle(.sidebar) } detail: { Text("Details") } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
补充说明
在SwiftUI中,List是独立的列表容器,而ForEach负责根据数据源批量生成子视图。当需要在List的分段中展示多个条目时,必须用ForEach来生成行元素,这样外层List才能正确识别所有条目,分段也能正常展开显示全部内容。
内容的提问来源于stack exchange,提问作者Can Celik
相关产品推荐
相关产品推荐

