// // SwiftModalWebVC.swift // // Created by Myles Ringle on 24/06/2015. // Transcribed from code used in SVWebViewController. // Copyright (c) 2015 Myles Ringle & Oliver Letterer. All rights reserved. // import UIKit @objc public protocol SwiftModalWebVCDelegate: class { @objc func didStartLoading() @objc func didReceiveServerRedirectForProvisionalNavigation(url: URL) @objc func didFinishLoading(success: Bool, url: URL) @objc func webDismiss() } public class SwiftModalWebVC: UINavigationController { @objc public weak var delegateWeb: SwiftModalWebVCDelegate? weak var webViewDelegate: UIWebViewDelegate? = nil @objc public convenience init(urlString: String, colorText: UIColor, colorDoneButton: UIColor, doneButtonVisible: Bool, hideToolbar: Bool = false) { let url = URL(string: urlString)! self.init(request: URLRequest(url: url), colorText: colorText, colorDoneButton: colorDoneButton, doneButtonVisible: doneButtonVisible, hideToolbar: hideToolbar) } public init(request: URLRequest, colorText: UIColor = UIColor.white, colorDoneButton: UIColor = UIColor.black, doneButtonVisible: Bool = false, hideToolbar: Bool = false) { let webViewController = SwiftWebVC(aRequest: request, hideToolbar: hideToolbar) webViewController.storedStatusColor = UINavigationBar.appearance().barStyle super.init(rootViewController: webViewController) let doneButton = UIBarButtonItem(image: SwiftWebVC.bundledImage(named: "SwiftWebVCDismiss"), style: UIBarButtonItem.Style.plain, target: webViewController, action: #selector(SwiftWebVC.doneButtonTapped)) doneButton.tintColor = colorDoneButton webViewController.buttonColor = colorText webViewController.titleColor = colorText webViewController.view.backgroundColor = UIColor.clear UINavigationBar.appearance().barStyle = UIBarStyle.default if (doneButtonVisible == true) { if (UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.pad) { webViewController.navigationItem.leftBarButtonItem = doneButton } else { webViewController.navigationItem.rightBarButtonItem = doneButton } } webViewController.delegate = self } override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) } required public init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override public func viewWillAppear(_ animated: Bool) { super.viewWillAppear(false) } public override func viewWillDisappear(_ animated: Bool) { super.viewDidDisappear(animated) } public override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) } } extension SwiftModalWebVC: SwiftWebVCDelegate { public func didStartLoading() { self.delegateWeb?.didStartLoading() } public func didReceiveServerRedirectForProvisionalNavigation(url: URL) { self.delegateWeb?.didReceiveServerRedirectForProvisionalNavigation(url: url) } public func didFinishLoading(success: Bool) { //print("Finished loading. Success: \(success).") } public func didFinishLoading(success: Bool, url: URL) { self.delegateWeb?.didFinishLoading(success: success, url: url) } public func webDismiss() { self.delegateWeb?.webDismiss() } }