【问题标题】:NavigationBar isn't appear when using WebViewKit使用 WebViewKit 时没有出现 NavigationBar
【发布时间】:2018-11-20 14:17:24
【问题描述】:

我有一个ViewControllerWeb 来显示WebView。我需要导航栏向用户显示一些选项,所以我需要显示 NavigationBar。

问题:导航栏不显示。

ViewControllerWeb.swift

import UIKit
import WebKit

class ViewControllerWeb : UIViewController, WKNavigationDelegate {

    @IBOutlet weak var webView: WKWebView!
    @IBOutlet weak var progress: UIActivityIndicatorView!

    var url : String?

    override func viewDidLoad() {
        self.webView.allowsBackForwardNavigationGestures = true
        self.webView.navigationDelegate = self
        let request = URLRequest(url: URL(string: url!)!)
        self.navigationController?.navigationBar.isHidden = false
        self.webView.load(request)
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("didFinish")
        self.progress.stopAnimating()
    }

    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        print("didiFail")
        self.progress.stopAnimating()
    }

    func webViewWebContentProcessDidTerminate(_ webView: WKWebView) {
        print("webViewWebContentProcessDidTerminate")
        self.progress.stopAnimating()
    }

    func webView(_ webView: WKWebView,
                 didStartProvisionalNavigation navigation: WKNavigation!) {
        print("didStartProvisionalNavigation")
        self.progress.startAnimating()
    }

    func webView(_ webView: WKWebView,
                 didFailProvisionalNavigation navigation: WKNavigation!,
                 withError error: Error) {
        print("didFailProvisional")
        self.progress.stopAnimating()
    }

}

故事板

模拟器 iPhone7 上的结果

导航栏未显示。

【问题讨论】:

    标签: swift xcode uinavigationbar wkwebview navigationbar


    【解决方案1】:

    UINavigationController 一起呈现ViewControllerWeb

    // Storyboard name
    let storyBoard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    // Storyboard withIdentifier
    let viewController = storyBoard.instantiateViewController(withIdentifier: "ViewControllerWeb")
    let navBarController = UINavigationController(rootViewController: viewController)
    self.present(navBarController, animated: true, completion: nil)
    

    【讨论】:

    • 这样我的IBOutlets 没有被初始化。
    • 您正在像这样使用故事板创建viewcontrollerlet storyBoard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)let viewController = storyBoard.instantiateViewController(withIdentifier: "ViewControllerWeb")
    • 你使用 Storyboard instantiateViewController 的方式是否有效? @Augusto
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多