Webview执行两个URL之一

问题描述 投票:0回答:1

我正在做字典申请。有些术语带有动画,有些则没有。如果;

let url = URL(string:“http://bsstech.site/-Sozlukler/Fizik/(f.animasyonAdi??”“).html”)! webview.load(URLRequest(url:url))

或让url = URL(string:“ http://bsstech.site/-Sozlukler/Fizik/logo.html”)! webview.load(URLRequest(url:url))我要运行。

我是否编写了以下代码,但没有得到想要的结果。

如果让f = fizik {

    if (f.animasyonAdi != nil) {
        let url = URL(string: "http://bsstech.site/-Sozlukler/Fizik/\(f.animasyonAdi ?? "").html")!
        webview.load(URLRequest(url: url))

    }else {
        let url = URL(string: "http://bsstech.site/-Sozlukler/Fizik/logo.html")!
        webview.load(URLRequest(url: url))

    }

        navigationItem.title = f.baslik
        aciklama.text = f.aciklama

     }
}

如果您有帮助,我将非常高兴。

html ios webkit swift5
1个回答
0
投票

步骤1:创建一个WebViewViewController

enter image description here

第2步:WebViewVC.xib文件中添加了WebKitView,顶部标题标签,十字按钮和活动IndicatorView,然后在WebViewVC.swift中插入插座。 >

enter image description here

第3步:

WebViewVC.swift中实现逻辑,如下所示:
import UIKit
import WebKit

class WebViewVC: UIViewController {

    // MARK: - Outlets
    @IBOutlet private weak var webView: WKWebView!
    @IBOutlet private weak var activityIndicatorView: UIActivityIndicatorView!
    @IBOutlet private weak var titleLabel: UILabel!

    // MARK: - Variables
    private let userAgentValue = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16"
    var navTitle: String?
    var urlString: String?

    // MARK: - View Cycle
    override func viewDidLoad() {
        super.viewDidLoad()

        initView()
        setupWebView()
        loadData()
    }

    // MARK: - Event
    @IBAction private func actionTapToCloseButton(_ sender: Any) {
        dismiss(animated: true, completion: nil)
    }
}

// MARK: - Setting up View Controller
extension WebViewVC {

    private func initView() {
        titleLabel.text = navTitle
    }

    private func setupWebView() {
        webView.navigationDelegate = self
        webView.customUserAgent = userAgentValue
        webView.isMultipleTouchEnabled = true
        webView.isUserInteractionEnabled = true
    }

    private func loadData() {
        if let `urlString` = urlString, !urlString.isEmpty, let query = urlString.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed), let url = URL(string: query) {
            let request = URLRequest(url: url)
            webView.load(request)
        }
    }
}

// MARK: - WKNavigationDelegate
extension WebViewVC: WKNavigationDelegate {

    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
        activityIndicatorView.startAnimating()
    }

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

    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        ShowPopUps.showDefaultAlert(title: "", message: "\(error.localizedDescription)", negativeActionText: "Ok")
        activityIndicatorView.stopAnimating()
    }
}

步骤4:

随便打电话
if let f = fizik {
    var urlString: String? = nil
    if (f.animasyonAdi != nil) {
        urlString = http://bsstech.site/-Sozlukler/Fizik/\(f.animasyonAdi ?? "").html"
    } else {
        urlString = "http://bsstech.site/-Sozlukler/Fizik/logo.html"
    }

   let vc = WebViewVC()
   vc.urlString = urlString
   vc.navTitle = f.baslik
   present(vc, animated: true, completion: nil)
}
    
© www.soinside.com 2019 - 2024. All rights reserved.