Swift:如何在同步方法中包装异步方法?

时间:2016-07-31 13:54:14

标签: ios swift

我试图在<div class="work-elem"> <div class="work-elem"> <div class="work-elem"> <div class="work-elem"> $(".work-elem:first").addClass("active"); $(".work-elem").each(function() { $(".work-elem").hover(function() { $(this).removeClass("active"); $(this).addClass("active"); }, function() { $(this).removeClass("active"); }); }); 中同步加载Javascript。从我的研究看来,WKWebView方法看起来是异步的,这会导致错误,因为页面会在JS之前加载,它会覆盖很多行为(由于异步性质,它只能工作一部分时间)。

我已经尝试了这一点,但它似乎无法运作:

evaluateJavaScript

我知道它不起作用,因为页面有时会加载,好像JS不在那里。我可以做同样的事情来同步这个过程吗?

1 个答案:

答案 0 :(得分:1)

您可以定义WKNavigationDelegate,以便在加载WKWebView的页面时收到通知

class Controller: UIViewController, WKNavigationDelegate {

    @IBOutlet var webView: WKWebView!

    override func viewDidLoad() {
        self.view = webView
        webView.navigationDelegate = self
    }

    func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
        print("page loaded")
        // <--- call your method from here
    }
}

您现在可以在webView(wevView:didFinishNavigation:)

中调用您的方法