You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.3 KiB

6 years ago
  1. //
  2. // WebLinksViewController.swift
  3. //
  4. //
  5. // Created by shishir sapkota
  6. //
  7. import Foundation
  8. import UIKit
  9. import Alamofire
  10. import WebKit
  11. class WebLinksViewController: UIViewController, WKUIDelegate {
  12. // MARK: Properties
  13. // MARK: Outlets
  14. var navTitle: String = ""
  15. var url: String?
  16. var titleString: String = ""
  17. // MARK: VC's Life cycle
  18. var webView: WKWebView?
  19. var activityIndicator: UIActivityIndicatorView?
  20. override func viewDidLoad() {
  21. super.viewDidLoad()
  22. let barButton = UIBarButtonItem.init(
  23. title: "penny_test_close_text".localized(),
  24. style: UIBarButtonItem.Style.plain,
  25. target: self,
  26. action: #selector(self.cancel)
  27. )
  28. self.navigationItem.rightBarButtonItem = barButton
  29. webView = WKWebView(frame: self.view.frame)
  30. setupWebView()
  31. activityIndicator = UIActivityIndicatorView(style: UIActivityIndicatorView.Style.gray)
  32. activityIndicator?.center = self.view.center
  33. self.view.addSubview(webView!)
  34. self.view.addSubview(activityIndicator!)
  35. }
  36. private func setupWebView() {
  37. self.webView?.uiDelegate = self
  38. webView?.navigationDelegate = self
  39. }
  40. // MARK: IBActions
  41. override func viewWillAppear(_ animated: Bool) {
  42. self.navigationItem.title = titleString
  43. self.openURLInWebView()
  44. }
  45. @objc func cancel() {
  46. self.dismiss(animated: true, completion: nil)
  47. }
  48. func openURLInWebView() {
  49. if NetworkReachabilityManager()?.isReachable == true {
  50. if let url = URL.init(string: self.url ?? "") {
  51. let request = URLRequest(url: url)
  52. webView?.load(request)
  53. }
  54. } else {
  55. self.alert(type: .error, message: "no_internet_connection_error".localized(), title: "")
  56. }
  57. }
  58. }
  59. // MARK: WKNavigationDelegate
  60. extension WebLinksViewController: WKNavigationDelegate {
  61. func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
  62. self.activityIndicator?.startAnimating()
  63. }
  64. func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
  65. self.activityIndicator?.stopAnimating()
  66. }
  67. func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
  68. self.activityIndicator?.stopAnimating()
  69. self.alert(type: .error, message: error.localizedDescription)
  70. }
  71. }