NavigationLink 在 iPad 上的奇怪行为
Weird behavior of NavigationLink on iPad
在我的应用程序中,我有一个滚动视图,其中包含嵌入在导航视图中的导航链接。在 iPad 上,按下 NavigationLinks 会导致一些奇怪的事情发生。第一次按下其中一个项目时,它工作得很好,并显示详细视图。对其他项目的任何后续按下要么什么都不做,要么显示先前按下的项目的详细视图。有时它会连续处理几个项目,但随后又会冻结。
导航栈好像有问题?
此简化示例显示了 11" iPad pro 运行 iOS 13.7
上的错误
struct ContentView: View {
var body: some View {
NavigationView {
ScrollView {
ForEach(0..<20) { index in
NavigationLink(destination: Text("\(index)")) {
Text("\(index)")
.padding()
.frame(width: 100, height: 100)
.background(Color.green)
}
}
}
}
}
}
是的,它看起来像一个错误。您可以向 Apple 提交反馈。
同时,这里有一个可能的解决方法。使用 Xcode 11.7 / iOS 13.7
测试
struct ContentView: View {
@State private var selection = -1
@State private var isActive = false
var body: some View {
NavigationView {
ScrollView {
ForEach(0..<20) { index in
Button(action: {
self.selection = index
self.isActive = true
} ) {
Text("\(index)")
.padding()
.frame(width: 100, height: 100)
.background(Color.green)
}
}
}
.background(NavigationLink(destination: Text("\(selection)"),
isActive: $isActive) { EmptyView() })
}
}
}
在我的应用程序中,我有一个滚动视图,其中包含嵌入在导航视图中的导航链接。在 iPad 上,按下 NavigationLinks 会导致一些奇怪的事情发生。第一次按下其中一个项目时,它工作得很好,并显示详细视图。对其他项目的任何后续按下要么什么都不做,要么显示先前按下的项目的详细视图。有时它会连续处理几个项目,但随后又会冻结。
导航栈好像有问题?
此简化示例显示了 11" iPad pro 运行 iOS 13.7
上的错误struct ContentView: View {
var body: some View {
NavigationView {
ScrollView {
ForEach(0..<20) { index in
NavigationLink(destination: Text("\(index)")) {
Text("\(index)")
.padding()
.frame(width: 100, height: 100)
.background(Color.green)
}
}
}
}
}
}
是的,它看起来像一个错误。您可以向 Apple 提交反馈。
同时,这里有一个可能的解决方法。使用 Xcode 11.7 / iOS 13.7
测试struct ContentView: View {
@State private var selection = -1
@State private var isActive = false
var body: some View {
NavigationView {
ScrollView {
ForEach(0..<20) { index in
Button(action: {
self.selection = index
self.isActive = true
} ) {
Text("\(index)")
.padding()
.frame(width: 100, height: 100)
.background(Color.green)
}
}
}
.background(NavigationLink(destination: Text("\(selection)"),
isActive: $isActive) { EmptyView() })
}
}
}