首页 > 解决方案 > SwiftUI 初学者:带有表单和列表的 VStack

问题描述

我是 SwiftUI Layout 的初学者(不是编码),我有一个问题

在此处输入图像描述

这里的代码:

var body: some View {
    NavigationView {
        VStack {
            Form {
                TextField("Nome", text: $name)
            }
            .navigationBarTitle("Aggiungi Dispensa", displayMode: .inline)
            .navigationBarItems(trailing: Button("Aggiungi") {
                if self.name.count > 0 {
                    let item = DispItem(name: self.name)
                    self.dispense.items.append(item)
                }
                self.name = ""
            })
            
            List {
                let sortedItems = dispense.items.sorted {
                    $0.name < $1.name
                }
                ForEach(sortedItems) { item in
                            Text(item.name)
                                .font(.headline)
                }
                .onDelete(perform: removeItems)
            }
        }
    }
}

基本上是一个由Form和List组成的VStack,但是我不明白顶部的空白空间来自哪里以及Form和List之间的空白。

谢谢马可

标签: listformsswiftuivstack

解决方案


正如@Asperi 在他评论中的链接中指出的那样,您可以使用VStack(spacing: 0)删除Formand之间的空格List

对于导航栏链接和标题之间的空间,看起来您正在相互嵌套NavigationView项目。

调用此视图的视图(是否称为“Impostazione”?)具有NavigationView因此您的子视图(“Aggiungi Dispensa”)不需要它自己的视图NavigationView


推荐阅读