繁体   English   中英

在 MainView 上隐藏 StatusBar 和 NavigationBar 但在 Swift 的 DetailView 上显示它

[英]Hide StatusBar And NavigationBar On MainView But Show It On DetailView In Swift

我写了两个 SwiftUI 视图,如下所示。 在这里,我想;

  1. 在主视图上隐藏状态栏和导航栏
  2. 在 DetailView 上显示 StatusBar 和 NavigationBar

但是当我像下面这样实现它时,有些东西 go 错了。

FirstView.swift

import SwiftUI

struct FirstView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: SecondView()) {
                Text("Main View")
            }
        }
        .edgesIgnoringSafeArea(.all)
        .navigationBarHidden(true)
        .statusBar(hidden: true)
    
    }
}

SecondView.swift

import SwiftUI
import UIKit
import WebKit

class SecondViewController: UIViewController, WKUIDelegate {
   var webView: WKWebView!
   override func viewDidLoad() {
      super.viewDidLoad()
      let myURL = URL(string: "https://www.stackoverflow.com")
      let myRequest = URLRequest(url: myURL!)
      webView.load(myRequest)
   }
   override func loadView() {
      let webConfiguration = WKWebViewConfiguration()
      webView = WKWebView(frame: .zero, configuration: webConfiguration)
      webView.uiDelegate = self
      view = webView
   }
}

private struct SecondViewHolder: UIViewControllerRepresentable {

    func makeUIViewController(context: Context) -> SecondViewController {
        return SecondViewController()
    }
    func updateUIViewController(_ uiViewController: SecondViewController, context: Context) {
    }
}

struct SecondView: View {
    var body: some View {
        VStack(spacing: 0) {
            HeaderView()
            SecondViewHolder()
            FooterView()
        }
        .edgesIgnoringSafeArea(.all)
        .navigationBarHidden(false)
        .statusBar(hidden: true)
    }
}

struct HeaderView: View {
    var body: some View {
        Text("Header Note")
            .foregroundColor(.yellow)
            .frame(maxWidth: .infinity, minHeight: 60)
            .background(Color.red)
    }
}

struct FooterView: View {
    var body: some View {
        Text("Footer Note")
            .foregroundColor(.yellow)
            .frame(maxWidth: .infinity, minHeight: 100)
            .background(Color.red)
    }
}

当我在 IOS 模拟器上运行它时:

观点看起来很不对劲。 在第二页中,我期待 NavigationBar 和 Header。 但我看不见他们。 我是 Swift 的新手。 你能帮我一下吗?

尝试以下

struct FirstView: View {
    @State private var noBars = true
    var body: some View {
        NavigationView {
            NavigationLink(destination: 
               SecondView()
                 .onAppear { self.noBars = false }
                 .onDisappear { self.noBars = true }
            ) {
                Text("Main View")
            }
        }
        .edgesIgnoringSafeArea(.all)
        .navigationBarHidden(noBars)
        .statusBar(hidden: noBars)
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM