Ios 从第一个VC预加载WKWebView url
我正在尝试在调用/显示第二个VC之前预加载WKWebView 这可以用swift 5编程语言实现吗?可能正在调用layoutSubviews() 在转换到下一个视图控制器之前,是否可以预加载webView?还是只有通过活动指示器才能显示这一点 第一个VC: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
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?是的,就像预装任何东西一样。在赛格开始的时候做。你为什么要这样做?