如何在列表中设置极限线

时间:2019-11-23 01:49:59

标签: swift swiftui swiftui-list

我正在尝试在列表中设置一个限制;我希望它仅显示5行。

这是我的代码:

struct ContentView: View {

    let allnum = ["1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10"]

    var body: some View {
        List {
            ForEach(self.allnum , id: \.self) { num in
                Text("\(num)")
            }
        }
    }
}

当我将List更改为List(0 ..< 5) { _ in时,看到5行,但数组中的所有元素都包含在内。

任何建议

谢谢!

3 个答案:

答案 0 :(得分:2)

关于代码的3个步骤注释

  1. 您应仅将数组的前n个元素(这里为5)作为数据源。
  2. List不需要ForEach
  3. 简单的闭包参数不需要名称。

因此,body的最小重构工作代码为:

var body: some View {
    List(allnum.prefix(5), id: \.self) { Text($0) }
}

更少的代码

如果您在某处实现此扩展:

extension String: Identifiable { public var id: String { self } }

列表代码将更小,更简单:

List(allnum.prefix(5)) { Text($0) }

答案 1 :(得分:0)

我用从0到<5的计数进行了ForEach,并使用该数字对数组进行了索引。在生产代码中,您可能希望进行测试以确保您不尝试使用超出数组末尾的索引。

totalPriceLabel.text = "\(price)"

答案 2 :(得分:0)

您不能执行以下操作:

struct ContentView: View {
    let allnum = ["1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10"]
    var body: some View {
        List {
            ForEach(self.allnum[0 ..< 5], id: \.self) { num in
                Text("\(num)")
            }
        }
    }
}

因此,您只选择了整个列表的一部分。