【问题标题】:Beginner with SwiftUI: VStack with Form and ListSwiftUI 初学者:带有表单和列表的 VStack
【发布时间】:2021-02-18 15:53:46
【问题描述】:

我是 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之间的空白区域是哪里来的。

谢谢 马可

【问题讨论】:

标签: list forms swiftui vstack


【解决方案1】:

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

对于导航栏链接和标题之间的空间,看起来您将NavigationView 项目嵌套在彼此内部。

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

【讨论】:

  • 好的,可以了,非常感谢。但我忘了链接图片:imgur.com/8VIJ7Wy
  • 我的意思是导航栏标题和要返回的导航链接之前的空白
  • @MarcoGT 尝试将.navigationBarTitle("Aggiungi Dispensa", displayMode: .inline) 放在前一个视图的 NavigationLink 中
  • @MarcoGT 我(再次)更新了我的答案-您正在嵌套NavigationView 项目。如果在此之前的视图中有 NavigationView,则不需要另一个。
  • @aheze,对不起,我不明白,你是什么意思?我没有任何 NavigationLink
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-09
  • 2020-04-28
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多