swiftui - navigationBarHidden结合内联显示模式导致跳转

标签 swiftui uinavigationbar

我有一个父 View ,其中我不需要任何导航栏,还有一个 subview ,我需要一个内联导航栏。

如果我导航到 subview ,然后再返回。列表顶部向上滚动时会有奇怪的跳跃效果。

我确信这是一个错误,但是有人有解决方法吗?如果有帮助,我可以访问底层 UIScrollView/UINavigationController 组件 - 但我不确定这些属性是否有帮助。

Screen recording of the bug

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/

相关文章:

swift - 为什么导航栏后退按钮项消失? swift 4

ios - 如何完全以编程方式添加 UINavigationBar?

ios - 满足条件时 SwiftUI 动画背景颜色变化

SwiftUI - 如何访问列表中的数据

如果 authorizationStatus 被拒绝,SwiftUI 将用户定向到他们的设置页面

ios - SwiftUI如何调整不同的屏幕尺寸

ios - 无法显示右栏按钮 - ios sdk

ios - SwiftUI iOS 14 Picker宽度无法更改

ios - 在应用程序中显示带有自定义 UINavigationBar 主题的 MFMailComposer 的白色 UINavigationBar

ios - 导航栏标题图片失真