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

SwiftUI中如何在同一界面结合List与Form视图?代码问题咨询

在SwiftUI中结合Form与List视图的解决方案

完全可以在SwiftUI同一界面里结合Form和List,不需要手动构建其余部分。你遇到的独立滚动、间距过大问题,是因为Form和List本身都是可滚动容器,再加上额外的padding导致的。这里给你两种可行的解决思路:

思路一:用List整合Form内容(推荐)

把原来Form里的内容放到List的Section中,这样整个界面只有一个滚动容器,既保留Form的样式,又能和List内容统一滚动,还能消除多余间距:

var body: some View {
    List {
        // 原Form内容作为一个Section,保持表单样式
        Section {
            Text(orgEntity.name)
            Text(orgEntity.address)
        }
        
        // 原List内容作为另一个Section
        Section {
            ForEach(0...3, id: \.self ) { int in
                Text("List Test \(int)")
            }
        }
    }
    .navigationTitle(orgEntity.name)
    // 可选:设置List样式为insetGrouped,更贴近Form默认外观
    .listStyle(.insetGrouped)
}

思路二:禁用其中一个容器的滚动

如果确实需要分开使用Form和List,可以禁用Form的滚动,让它和List在同一个VStack里跟随List滚动,同时去掉多余padding:

var body: some View {
    VStack(spacing: 0) {
        Form {
            Text(orgEntity.name)
            Text(orgEntity.address)
        }
        .scrollDisabled(true) // 禁用Form的滚动能力
        .padding(.bottom, 0)  // 移除额外底部间距
        
        List {
            ForEach(0...3, id: \.self ) { int in
                Text("List Test \(int)")
            }
        }
    }
    .navigationTitle(orgEntity.name)
}

内容的提问来源于stack exchange,提问作者srome11

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:22:51