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
相关产品推荐
相关产品推荐

