SwiftUI NavigationView会导致列表出现不需要的缩进

SwiftUI NavigationView会导致列表出现不需要的缩进,swiftui,Swiftui,如果我在导航视图中用列表包装VStack,结果列表将缩进,请参见图。这不是预期的格式,因为我希望列表覆盖整个屏幕宽度 我如何解决这个问题?为什么会发生这种情况 注意:如果我删除VStack,这种缩进行为将消失,但这里我确实希望在NavigationView中包含文本框(“某物…”),因为我希望它在用户单击某个项目后消失 完整代码如下,Xcode 12.3: import SwiftUI struct ListView: View { var items: [String] var b

如果我在
导航视图
中用
列表
包装
VStack
,结果列表将缩进,请参见图。这不是预期的格式,因为我希望列表覆盖整个屏幕宽度

我如何解决这个问题?为什么会发生这种情况

注意:如果我删除
VStack
,这种缩进行为将消失,但这里我确实希望在
NavigationView
中包含文本框(“某物…”),因为我希望它在用户单击某个项目后消失

完整代码如下,Xcode 12.3:

import SwiftUI

struct ListView: View {
  var items: [String]
  var body :some View {
    List {
      ForEach(items, id: \.self) { item in
        NavigationLink(destination: Text(item)){
          Text(item)
        }
      }
    }
  }
}

struct ContentView: View {
    var body: some View {
      NavigationView{
        VStack{
          Text("Something that should disappear when I click on the item")
          ListView(items: ["a", "b"])
        }
      }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
      ContentView()
    }
}

嘿,你需要做的就是为.liststyle添加修饰符

.listStyle(InsetListStyle())

此外,您还应注意,无法删除列表上的V形符号

import SwiftUI

struct ListView: View {
  var items: [String]
  var body :some View {
    List {
      ForEach(items, id: \.self) { item in
        NavigationLink(destination: Text(item)){
          Text(item)
        }
      }
    }.listStyle(InsetListStyle())
  }
}

struct ContentView: View {
    var body: some View {
      NavigationView{
        VStack{
          Text("Something that should disappear when I click on the item")
          ListView(items: ["a", "b"])
        }
      }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
      ContentView()
    }
}