Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从第一个VC预加载WKWebView url_Ios_Swift_Uiviewcontroller_Wkwebview - Fatal编程技术网

Ios 从第一个VC预加载WKWebView url

Ios 从第一个VC预加载WKWebView url,ios,swift,uiviewcontroller,wkwebview,Ios,Swift,Uiviewcontroller,Wkwebview,我正在尝试在调用/显示第二个VC之前预加载WKWebView 这可以用swift 5编程语言实现吗?可能正在调用layoutSubviews() 在转换到下一个视图控制器之前,是否可以预加载webView?还是只有通过活动指示器才能显示这一点 第一个VC: override func viewDidLoad() { super.viewDidLoad() SecondVC.loadWebView() //PSUEDO of what I am trying to

我正在尝试在调用/显示第二个VC之前预加载WKWebView

这可以用swift 5编程语言实现吗?可能正在调用layoutSubviews()

在转换到下一个视图控制器之前,是否可以预加载webView?还是只有通过活动指示器才能显示这一点

第一个VC:

override func viewDidLoad() {
        super.viewDidLoad()
        SecondVC.loadWebView() //PSUEDO of what I am trying to do
        
    }
func loadWebView() {
        
        // WKWebView nit
        webView.navigationDelegate = self
        webView.addObserver(self, forKeyPath: "URL", options: .new, context: nil)
        view.addSubview(webView)
        view.backgroundColor = .systemBackground
     
        guard let url = URL(string: "https://connect.stripe.com/oauth/authorize?response_type=code&client_id=\(live_client_id)&scope=read_write") else {
            return
        }
        
        
        webView.load(URLRequest(url: url))
        
    }
SecondVC:

override func viewDidLoad() {
        super.viewDidLoad()
        SecondVC.loadWebView() //PSUEDO of what I am trying to do
        
    }
func loadWebView() {
        
        // WKWebView nit
        webView.navigationDelegate = self
        webView.addObserver(self, forKeyPath: "URL", options: .new, context: nil)
        view.addSubview(webView)
        view.backgroundColor = .systemBackground
     
        guard let url = URL(string: "https://connect.stripe.com/oauth/authorize?response_type=code&client_id=\(live_client_id)&scope=read_write") else {
            return
        }
        
        
        webView.load(URLRequest(url: url))
        
    }

假设这是视图控制器,您可以在其中查看web视图。您可以将加载网页的代码放入其初始值设定项中

class WebViewController: UIViewController {
    lazy private var webView: WKWebView = {
        let webView = WKWebView(frame: view.bounds)
        return webView
    }()
    
    private var url: URL!
    
    init(url: URL) {
        self.url = url
        super.init(nibName: nil, bundle: nil)
        
        self.loadWebsite()
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }
    
    private func loadWebsite() {
        view.addSubview(webView)
        webView.load(URLRequest(url: url))
    }
}
在上一个视图控制器中,在导航到web视图之前实例化
WebViewController
。实例化它时,会调用
WebViewController
的初始值设定项,然后调用加载网页的
loadWebsite()
方法

class ViewController: UIViewController {
    let vc = WebViewController(url: URL(string: "https://stripe.com/")!)
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
            self.showWebView()
        }
    }
    
    private func showWebView() {
        navigationController?.show(vc, sender: nil)
    }
}

因此,当您实际显示
WebViewController
时,希望网页已经加载。

没有任何意义。现在还没有第二个视图控制器。我知道,但是在显示下一个vc之前,有没有一种方法可以预装一个webview?是的,就像预装任何东西一样。在赛格开始的时候做。你为什么要这样做?