NavigationView 嵌套层次结构中的空行

NavigationView empty rows in nested hierarchies

我是 SwiftUI 的新手,我正在尝试使用 NavigationView 和 NavigationLink 实现某种具有分层导航的文件浏览器。尽管它在技术上是可行的,但在每个 "deeper" 级别中都会出现新条目上方的空行。看起来更高级别的条目保留了各自的行:它们没有显示在更深的级别而是留下一个空白行,迫使新条目占据较低的行。

例如(c.f。附加屏幕截图):
文件夹 "A" 和 "B" 正确显示在第 1 行和第 2 行(在根级别);然而,在选择文件夹 "A" 后,子文件夹 "C" 和 "D" 出现在第 3&4 行中,而第 1&2 行为空白。

ContentView.swift

import SwiftUI
struct ContentView : View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: TreeView(item_id: 0, name: "Root")) {
                Text("Test")
            }
            .navigationBarTitle(Text("Select"))
        }       
    }
}

TreeView.swift

import SwiftUI

struct TreeView : View {
    var item_id: Int
    var name: String

    var body: some View {
        List(databaseData) { item in
            if item.parent == self.item_id {
                NavigationLink(destination: TreeView(item_id: item.id, name: item.name)) {
                    Text(item.name)
                }
            }
        }
        .navigationBarTitle(Text(self.name))
    }
}

有什么解决办法吗?谢谢!

同时我可以弄清楚:问题似乎是在列表闭包中,只要 if 条件为假,就会添加一个空行。我通过过滤提供给列表的数组而不是在列表内部过滤来修复它:

    var body: some View {
    List(databaseData.filter{[=10=].parent == self.item_id}) { item in
        NavigationLink(destination: TreeView(item_id: item.id, name: item.name)) {
            Text(item.name)
        }
    }

适用于 Xcode 11 beta 4。