元组数组
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)
}
}
}
}
答案 0 :(得分:1)
一种解决方案是将filter
函数与ForEach
一起使用
List {
ForEach(cardData.filter {$0.deck == "B"}) { item in
或仅ForEach
和if
List {
ForEach(cardData) { item in
if (item.deck == "B") {
答案 1 :(得分:1)
您所说的空行实际上是NavidationBar
。我已经在您的视图中添加了标题以显示该标题。确保仅显示卡片组“ B”的最佳方法是在将过滤器传递到Array
时将其应用于List
。传递给Array
或List
的{{1}}需要包含ForEach
的项目,或者您必须明确提供应将哪个属性用作Identifiable
id