如何在iOS Swift中设置延迟?

时间:2017-05-08 20:55:34

标签: ios swift

func create()
        {
            self.Instance!.viewController!.loadCategory(category: 0)

            /*
            repeat
            {
                print("Loading category section!")
            }
            while (self.Instance!.viewController!.isLoading!)
            */
        }

上面的代码显示我可以设置延迟,直到isLoading为false;但是,它永远不会变错,因为它会锁定线程。

我如何在后台拥有此功能?

由于

LoadCategory使用wkwebview加载网站的类别页面,并在加载网页内容时将isLoading设置为true,并在加载完毕后将其设置为false

 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
    {
        print("Finished navigating to url \(String(describing: webView.url))")

        self.isLoading = false
    }

这是我的函数,它在完成加载内容后将其设置为self.isLoading为false。

2 个答案:

答案 0 :(得分:1)

Grand Central Dispath

在Swift中,您可以使用 Grand Central Dispatch

在给定的延迟后执行关闭

这是代码

DispatchQueue.main.asyncAfter(deadline: .now() + 2) { 
    print("This will be executed 2 seconds in the future")
} 
  

不要忘记import Foundation

答案 1 :(得分:1)

WKWebView可以有导航委托(WKNavigationDelegate)。该委托可以实现一个名为webView:didFinishNavigationhttps://developer.apple.com/reference/webkit/wknavigationdelegate/1455629-webview)的方法,该方法将告诉您Web视图何时完成加载内容。

根据您的代码,您的viewController可能可以设置为Web视图的委托,并可以在加载内容后执行您想要的任何操作。