在列表上显示对象数组

时间:2019-11-23 19:17:32

标签: swift swiftui

元组数组

var cardData = [

   Card(deck: "A", message: "Hello" ),
   Card(deck: "B", message: "Bye" )
   Card(deck: "B", message: "Good morning" )

]

NavigationView -我只想显示卡片组“ B”的卡片,因此添加了if语句。但是它在表视图中显示了一个空行,该空行位于平台“ B”的第一行之前。我该如何解决此错误。谢谢!

        NavigationView {
            List(cardData) { item in

                //Want to filter 
                if item.deck == "B" {

                    NavigationLink(destination:
                        Text("Details")
                    ){
                        Text(item.deck)
                        Text(item.message)
                    }
                }
            }
        }

2 个答案:

答案 0 :(得分:1)

一种解决方案是将filter函数与ForEach一起使用

List {
    ForEach(cardData.filter {$0.deck == "B"}) { item in

或仅ForEachif

List {
    ForEach(cardData) { item in
        if (item.deck == "B") {

答案 1 :(得分:1)

您所说的空行实际上是NavidationBar。我已经在您的视图中添加了标题以显示该标题。确保仅显示卡片组“ B”的最佳方法是在将过滤器传递到Array时将其应用于List。传递给ArrayList的{​​{1}}需要包含ForEach的项目,或者您必须明确提供应将哪个属性用作Identifiable

id