2017-11-18 23 views
0

私は助けが必要です。 最初のView ControllerのwebViewが完了した後で、Second View ControllerでWebViewをプリロードします。Swift 3:事前ロードSecondViewControllerのWKWebViewを先にクリック

Second View ControllerでloadWebView関数を呼び出すために、通知センターpost/observeを使用する必要があるとは思いますが、その方法はわかりません。どんな提案も感謝しています。


enter image description here

FirstViewController.swift

import UIKit; 
import WebKit; 

class FirstViewController: UIViewController, WKNavigationDelegate { 


    let webView:WKWebView = WKWebView(frame: CGRectMake(0, 0, UIScreen.main.bounds.width, UIScreen.main.bounds.height)) 

    func webView(_ webView: WKWebView, 
      didFinish navigation: WKNavigation!) { 
     print("loaded!") 
     webView.isHidden = false 

     } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let url = URL(string: "https://www.google.com") 
     webView.navigationDelegate = self 
     webView.load(URLRequest(url: url!)) 
     webView.isHidden = true 
     self.view.addSubview(webView) 

    } 

} 

SecondViewController.swiftまずVCで

import UIKit 
import WebKit 

class SecondViewController: UIViewController, WKNavigationDelegate { 

    let webView:WKWebView = WKWebView(frame: CGRectMake(0, 0, UIScreen.main.bounds.width, UIScreen.main.bounds.height)) 


    func webView(_ webView: WKWebView, 
      didFinish navigation: WKNavigation!) { 
     print("loaded!") 
     webView.isHidden = false 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 


    } 

    func loadWebView() { 
     let url = URL(string: "https://www.amazon.com") 
     webView.navigationDelegate = self 
     webView.load(URLRequest(url: url!)) 
     webView.isHidden = true 
     self.view.addSubview(webView) 
    } 


} 

答えて

0

セカンドVCで
func webView(_ webView: WKWebView, 
      didFinish navigation: WKNavigation!) { 

    //Post notification 
    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "WebViewFinishedLoading"), object: nil) 
} 

override func viewDidLoad() { 
     super.viewDidLoad() 

    // Add observer for your notification 
    NotificationCenter.default.addObserver(self, selector: #selector(loadWebView), name: NSNotification.Name(rawValue: "WebViewFinishedLoading"), object: nil) 
    } 

//Remove observer in deinit 
deinit {  
    NotificationCenter.default.removeObserver(self) 
} 
+0

secondViewControllerは、スタック内にない場合は? –

+0

初期化される前にロードすることはできません。あなたは何をしているのですか? –

関連する問題