首页 > 解决方案 > SwiftUI .navigationBarHidden(false) 在 iOS 14 上不起作用

问题描述

我有一个简单的 SwiftUI 视图,其中包含一个 Web 视图:

struct GetInTouchView: View {
    // MARK: - state
    @State var url: URL
    @State var backgroundColour = Color.login.background
        
    // MARK: - init
    init(url: URL) {
        self._url = .init(wrappedValue: url)
    }
    
    // MARK: - body
    var body: some View {
        ZStack {
            backgroundColour
                .edgesIgnoringSafeArea(.all)
            WebView(url: $url, backgroundColour: $backgroundColour)
                .edgesIgnoringSafeArea(.bottom)
        }
        .environment(\.colorScheme, .light)
        .preferredColorScheme(.light)
        .navigationTitle(NSLocalizedString("Get in touch", comment: "Get in touch"))
        .navigationBarTitleDisplayMode(.inline)
        .navigationBarHidden(false)
    }
}

此视图显示在使用导航链接隐藏导航栏的视图中:

let getInTouchView = LazyView(GetInTouchView(url: getInTouchUrl))
NavigationLink(destination: getInTouchView) {
     Text(NSLocalizedString("Get in touch", comment: "Get in touch"))
         .mp_white_outline_pill_button()
}

在 iOS 14 上,导航栏永远不可见。似乎还有一个问题,即有两个导航链接会导致获取联系视图立即弹出,因此我将其包含在上述导航链接下,这似乎可以解决该问题:

NavigationLink(destination: EmptyView()) { EmptyView() }

但是,导航栏仍然不可见。上面的代码在 iOS 15 上运行良好,所以这似乎只是 iOS 14 的问题。

iOS 14:

在此处输入图像描述

iOS 15:

在此处输入图像描述

标签: swiftswiftuinavigationview

解决方案


推荐阅读