多行文本在 SwiftUI 列表内的 NavigationLink 中不起作用

Multiline Text does not work in a NavigationLink inside of a List in SwiftUI

多行 Text in a NavigationLink inside a List 似乎不起作用。

代码如下:

struct ContentView : View {
    var body: some View {
        List(1...5) { _ in
            NavigationLink(destination: EmptyView()) {
                Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.")
                    .lineLimit(nil)
            }
        }
    }
}

删除 NavigationLinkText 的行为符合预期。

有没有办法解决这个问题,或者这是一个错误?

更新

看来Beta 5已经解决了这个bug!


Beta 4 和以前版本的解决方法:

NavigationLink 似乎是 "broken"。但您可以改用 DynamicNavigationDestinationLink。我知道它太冗长了,但如果你需要一个出路,这里有。至少在 NavigationLink 工作得更好之前是这样。

struct ContentView: View {

    var body: some View {
        NavigationView {
            TopView().navigationBarTitle(Text("Top View"))
        }
    }
}

struct TopView: View {

    let detailView = DynamicNavigationDestinationLink(id: \String.self) { data in
        DetailView(passedData: data)
    }

    var body: some View {
        List(1...5) { i in
            Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.")
                .lineLimit(nil)
                .tapAction { self.detailView.presentedData?.value = "Detail for Row #\(i)" }
        }
    }
}

struct DetailView: View {
    let passedData: String

    var body: some View {
        Text(passedData)
    }
}

在当前的 XCode 13.1 Beta 中,当文本视图位于容器视图内时,我仍然遇到此问题。我可以解决这个问题,给行(容器)一个最小高度:

Text("blabla").lineLimit(2).frame(minHeight: 50)