【问题标题】:SwiftUI Add view below a listSwiftUI 在列表下方添加视图
【发布时间】:2020-11-29 22:42:43
【问题描述】:

我有一个包含一些项目的清单。

在列表下方,我想点击按钮来加载更多项目。 (因为加载所有项目需要一些用户操作,例如输入 TAN,所以当用户滚动到列表末尾时,这不应该自动完成,但只有在他喜欢时才这样做。)

我想要的是这样的视图:

但是,如果我将 List 和 Button 放在 VStack 中,则 Button 将始终显示在屏幕底部,而不仅仅是当我滚动到 List 末尾时:

struct ContentView: View {
    
    private let items = Range(0...15).map { "Item " + String($0) }
    
    var body: some View {
        VStack {
            List(items, id: \.self) { item in
                Text(item)
            }
            
            HStack {
                Spacer()
                
                Button("Load more") { print("Load more items") }
                
                Spacer()
            }
        }
    }
}

如果我将按钮添加到列表中,按钮显然会显示为具有白色背景且列表中没有任何空间的列表项:

struct ContentView: View {
    
    private let items = Range(0...15).map { "Item " + String($0) }
    
    var body: some View {
        List {
            ForEach(items, id: \.self) { item in
                Text(item)
            }
            
            HStack {
                Spacer()
                
                Button("Load more") { print("Load more items") }
                
                Spacer()
            }
        }.listStyle(GroupedListStyle())
    }
}

有没有办法添加一个视图,当用户滚动到列表的末尾但它不是列表的一部分时变得可见? (或者至少看起来像是在列表之下而不是列表的一部分?)

【问题讨论】:

  • 如果要从模拟器中截取屏幕截图,它们可以更小,并且帖子看起来更具可读性。
  • 如问题所述:第一个。

标签: swiftui


【解决方案1】:

您应该使用第二个变体,但稍作调整,如下所示(根据您的需要修改颜色/空间

var body: some View {
    List {
        ForEach(items, id: \.self) { item in
            Text(item)
        }

        HStack {
            Button("Load more") { print("Load more items") }
        }
        .listRowInsets(EdgeInsets())
        .frame(maxWidth: .infinity, minHeight: 60)
        .background(Color(UIColor.systemGroupedBackground))

    }.listStyle(GroupedListStyle())
}

【讨论】:

  • 几乎完美。知道如何摆脱“加载更多”单元格的水平线吗?
  • 它是列表行分隔符,您只能将它们全部删除UITableView.appearance().separatorStyle = .none(但如果您愿意,可以在之后为动态部分添加自定义)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
相关资源
最近更新 更多