SwiftUI NavigationView 导致列表出现不需要的缩进 [重复]

Posted

技术标签:

【中文标题】SwiftUI NavigationView 导致列表出现不需要的缩进 [重复]【英文标题】:SwiftUI NavigationView leads to unwanted indentation for lists [duplicate] 【发布时间】:2021-01-06 01:58:04 【问题描述】:

如果我将VStackList 包装在NavigationView 内,则结果列表会缩进,请参见图片。这不是预期的格式,因为我希望列表覆盖整个屏幕宽度。

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

注意:如果我删除 VStack,这种缩进行为将会消失,但在这里我确实想在 NavigationView 中包含文本框(“Something...”),因为我希望它消失一旦用户点击一个项目。

完整代码如下,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()
    

【问题讨论】:

【参考方案1】:

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

.listStyle(InsetListStyle())

另外你应该知道,没有办法删除列表上的人字形符号

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()
    

【讨论】:

以上是关于SwiftUI NavigationView 导致列表出现不需要的缩进 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在启动时显示 NavigationView (SwiftUI) 的详细视图

SwiftUI @State 在放入 NavigationView(macOS 应用程序)时仅更新一次

SwiftUI NavigationView 与 List 内 ForEach 中的 NavigationLink 来回跳转

NavigationView 的内容未显示 SwiftUI

SwiftUI:如何更改 NavigationView 的色调(背景颜色)?

NavigationView高度不规则swiftui