删除 List Swift UI Xcode 11 中的空行

Posted

技术标签:

【中文标题】删除 List Swift UI Xcode 11 中的空行【英文标题】:Remove empty rows in List Swift UI Xcode 11 【发布时间】:2019-10-08 10:39:29 【问题描述】:

如何使用 Swift UI 删除 List 中的空行这是我的代码。

struct LandMarkList: View 
    var body: some View 
        NavigationView 
            List(LandMarkListData)  landmark in
                LandMarkRow(landmark: landmark)
            

        .navigationBarTitle("List")
        
    

【问题讨论】:

LandMarkListDataLandMarkRow 中有什么内容? 【参考方案1】:
struct LandMarkList: View 
    var body: some View 
        NavigationView 
            List(LandMarkListData)  landmark in
                LandMarkRow(landmark: landmark)
            

            .navigationBarTitle("List")
            .listStyle(GroupedListStyle())
        
    

最后我通过添加listStyle 找到了解决方案。

【讨论】:

【参考方案2】:
NavigationView 
   ...
   .listStyle(.grouped)

在你的情况下:

struct LandMarkList: View 
    var body: some View 
        NavigationView 
            List(LandMarkListData)  landmark in
                LandMarkRow(landmark: landmark)
            

        .navigationBarTitle("List")
        .listStyle(.grouped)
        
    

【讨论】:

泛型参数 'SelectionValue' 无法推断此错误接收后添加 '.listStyle(.grouped)'【参考方案3】:

据我所知,目前无法从 SwiftUI 中的 List 中删除空单元格。但是,您仍然可以通过完全不使用 List 并手动创建 Dividers 来摆脱空单元格(特别是所有那些难看的分隔符)。尝试以下方法:

ScrollView() 
    ForEach(elements)  element in
        CellView(element: element)
        Divider()
    

【讨论】:

【参考方案4】:

这帮助我在 MacOS Catalina 10.15.5 Beta 下使用 Xcode 11.4 摆脱了 List 中的空行:

List(flights)  flight in
  FlightInfoRow(flightInfo: flight)
.onAppearUITableView.appearance().separatorColor = .clear

如果您想为现有行显示分隔线,您可以在自定义列表行视图中执行此操作。

    在您的视图中使用GeometryReader 的单元格宽度和高度信息。
VStack  
  GeometryReader  geometry in
    HStack  Text("\(flight.airline)") 
  

    使用Path path in 在您的内容信息下方画一条水平线,如下所示:
Path path in
  path.move(to: CGPoint(x: 0, y: geometry.size.height))
  path.addLine(to: CGPoint(x: geometry.size.width, y: geometry.size.height))
.stroke(Color(.lightGray), lineWidth: 0.5)

这将创建类似这样的内容(没有空行和分隔线的列表):

【讨论】:

【参考方案5】:

感谢Introspect

我的代码

List() 
  ...

.introspectTableView  tableView in
     tableView.separatorColor = UIColor.lightGray.withAlphaComponent(0.4)
     tableView.tableFooterView = UIView()   

【讨论】:

以上是关于删除 List Swift UI Xcode 11 中的空行的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 与 Firebase 使用 Xcode 11 GM 种子 2 - Swift UI Firestore

Swift UI Canvas 未在 macOS 10.15 和 Xcode 11.1 中显示

有没有一种方法可以在不使用 Xcode 11 在 iPhone 上构建 UI 的情况下测量 Swift 的性能? [关闭]

如何在 Xcode 11 中删除 Swift 包依赖项?

在 Xcode 7.0.1 中进行 UI 测试时,是不是可以使用 Swift 滚动到 Element()?

在 Swift UI/Xcode 中创建导航链接错误