多行文本在 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)
删除NavigationLink
,Text
的行为符合预期。
有没有办法解决这个问题,或者这是一个错误?
【问题讨论】:
【参考方案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 列表)