html - 执行两个 url 之一的 webview
问题描述
我正在做一个字典应用程序。有些术语有动画,有些没有。如果 ;
让 url = URL(string: " http://bsstech.site/-Sozlukler/Fizik/(f.animasyonAdi ?? "").html")! webview.load(URLRequest(url: url))
或者让 url = URL(字符串:“ 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
}
}
如果您能提供帮助,我将非常高兴。
解决方案
第 1 步:创建一个 WebViewViewController
第二步:在WebViewVC.xib文件中添加WebKitView、顶部标题标签、十字按钮和活动 IndicatorView ,然后在WebViewVC.swift中插入 outlets
第 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)
}
推荐阅读
- filesystems - bluestore_mic_alloc_size 没有被 ceph 守护进程接收
- javascript - AngularJS 和 JS 数组访问
- python - python - Yahoo Janan Ads Api 返回丢失的数据
- nestjs - 有没有使用 NestTs 从数据库中检索大文件的解决方案
- typescript - 为什么这个 JSON 模式不能分配给这个 TypeScript 接口?
- javascript - 找不到模块:无法解析“firebase”
- scala - 无法使用 spark scala 读取和写入 kafka 主题
- python - 在python中这是做什么的?x = 函数(参数)(变量)
- javascript - Flutter Firestore 集合相关的下拉菜单
- python - 将多个图一起绘制为子图