多行文本在 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)
}
}
}
}
删除 NavigationLink
,Text
的行为符合预期。
有没有办法解决这个问题,或者这是一个错误?
更新
看来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)
多行 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)
}
}
}
}
删除 NavigationLink
,Text
的行为符合预期。
有没有办法解决这个问题,或者这是一个错误?
更新
看来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)