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

Posted

技术标签:

【中文标题】多行文本在 SwiftUI 列表内的 NavigationLink 中不起作用【英文标题】:Multiline Text does not work in a NavigationLink inside of a List in SwiftUI 【发布时间】:2019-07-10 19:34:08 【问题描述】:

NavigationLink 内的 List 内的多行 Text 似乎不起作用。

代码如下:

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 的行为符合预期。

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

【问题讨论】:

【参考方案1】:

更新

Beta 5 似乎已经解决了这个错误!


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

似乎 NavigationLink 已“损坏”。但您可以改用 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)
    

【讨论】:

更新了答案,因为 beta 5 似乎解决了这个问题。【参考方案2】:

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

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

【讨论】:

以上是关于多行文本在 SwiftUI 列表内的 NavigationLink 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 SwiftUI 的单个列表部分中放置多个文本行吗?

与其他内容一起放入 HStack 时,文本只有一行(SwiftUI 列表)

SwiftUI 中的多行可编辑文本字段

SwiftUI - 适合多行文本宽度的内联样式文本背景颜色 SwiftUI

SwiftUI 多行文本背景颜色

如何在 swiftUI 中创建具有多列的列表?