swift 通过WKWebView以编程方式添加ActivityIndicator的问题,未显示

8i9zcol2  于 2023-05-16  发布在  Swift
关注(0)|答案(2)|浏览(206)

我的代码成功地加载了我想要的网页;但是,我在加载时添加活动指示器时遇到问题。
我是swift的新手,所以我阅读了其他stackexchange的例子。我创建了一个UIActivityIndicator,在override函数中设置它,但它没有显示。
网页加载正常。下面是可运行代码。

import UIKit
import WebKit

class FeedbackWebViewController: UIViewController, WKNavigationDelegate {

    let indicator = UIActivityIndicatorView(style: .gray)

    var webView: WKWebView!

    override func loadView() {
        webView = WKWebView()
        webView.navigationDelegate = self

        indicator.center = webView.center
        indicator.hidesWhenStopped = true
        webView.addSubview(indicator)

        view = webView
    }
    override func viewDidLoad() {
        super.viewDidLoad()

        let url = URL(string: "https://www.apple.com")!
        webView.load(URLRequest(url: url))
        webView.allowsBackForwardNavigationGestures = true

        self.indicator.startAnimating()
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        indicator.stopAnimating()
    }

    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        indicator.stopAnimating()
    }
}
im9ewurl

im9ewurl1#

DONT覆盖loadView。可能会发生不好的事情。在didLoad中移动代码。应该能成功

qjp7pelc

qjp7pelc2#

尝试将相关的3行放到viewDidAppear而不是viewDidLoad。对我很有效。

相关问题