我有一个父 View ,其中我不需要任何导航栏,还有一个 subview ,我需要一个内联导航栏。
如果我导航到 subview ,然后再返回。列表顶部向上滚动时会有奇怪的跳跃效果。
我确信这是一个错误,但是有人有解决方法吗?如果有帮助,我可以访问底层 UIScrollView/UINavigationController 组件 - 但我不确定这些属性是否有帮助。
struct ContentView: View {
var body: some View {
NavigationView {
List( 0...50, id: \.self ) { i in
NavigationLink(destination: HelloView()) {
Text("\(i)")
}
}
.navigationBarHidden( true )
}
}
}
struct HelloView: View {
var body: some View {
Text("Hello")
.navigationBarTitle("Hello", displayMode: .inline)
}
}
最佳答案
我意识到这很奇怪,但是可以通过设置 navigationBarTitle
属性来缓解这种情况。根据您想要的情况,我会推荐以下内容:
struct ContentView: View {
var body: some View {
NavigationView {
List( 0...50, id: \.self ) { i in
NavigationLink(destination: HelloView()) {
Text("\(i)")
}
}
.navigationBarTitle("", displayMode: .inline) /// <<--- Insert this line
.navigationBarHidden( true )
}
}
}
通过将标题属性设置为空白并使用内联显示模式,它消除了大标题的 View ,并且实际上正确地隐藏了 View 。
关于swiftui - navigationBarHidden结合内联显示模式导致跳转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66945478/