Skip to content

Instantly share code, notes, and snippets.

@g001613001
Last active December 30, 2016 11:07
Show Gist options
  • Save g001613001/22619894c7d559f76f32d54e49a205a0 to your computer and use it in GitHub Desktop.
Save g001613001/22619894c7d559f76f32d54e49a205a0 to your computer and use it in GitHub Desktop.
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
switch segue.identifier ?? "" {
//FIXME: 這裡有問題 可能是這邊造成retain cycle
case "Web":
if let indexPath = sender as? IndexPath {
let row = indexPath.row
if row == 0 {
guard let nav = segue.destination as? UINavigationController, let vc = nav.topViewController as? WebVController else { return }
vc.urlString = "http://www.kff.tw"
vc.navigationItem.title = "高雄電影節"
}
if row == 1 {
guard let nav = segue.destination as? UINavigationController, let vc = nav.topViewController as? WebVController else { return }
vc.urlString = "http://kfa.kcg.gov.tw/mobile/index.php"
vc.navigationItem.title = "高雄市電影館"
}
}
if let banner = sender as? Banner {
guard let nav = segue.destination as? UINavigationController, let vc = nav.topViewController as? WebVController else { return }
vc.urlString = banner.Url
if banner.PromoBannerName != "" {
vc.title = banner.PromoBannerName
}
}
default: ()
}
}
import UIKit
class WebVController: UIViewController {
@IBOutlet weak var webView: UIWebView!
@IBOutlet weak var activityIndicatorView: UIActivityIndicatorView!
var urlString: String? = nil
// MARK: - Private var
let iPad = UIDevice.current.userInterfaceIdiom == .pad
// MARK: - UIViewController
override var supportedInterfaceOrientations : UIInterfaceOrientationMask {
if iPad {
return .all
} else {
return .portrait
}
}
override func viewDidLoad() {
super.viewDidLoad()
if (urlString ?? "") != "" {
if let _urlString = urlString {
let url = URL (string: _urlString)
let request = URLRequest(url: url!)
webView.loadRequest(request)
}
} else {
activityIndicatorView.isHidden = true
view.addToBeSuppliedView()
}
}
deinit {
urlString = nil
print("WebVC deinit.")
}
fileprivate func checkCanBack() {
navigationItem.leftBarButtonItem?.isEnabled = webView.canGoBack
}
@IBAction func btnDismissTapped(_ sender: AnyObject) {
//FIXME: 有問題 解散後還是被持有
dismiss(animated: true, completion: nil)
}
}
// MARK: - UIWebViewDelegate
extension WebVController: UIWebViewDelegate {
func webViewDidStartLoad(_ webView: UIWebView) {
activityIndicatorView.isHidden = false
checkCanBack()
}
func webViewDidFinishLoad(_ webView: UIWebView) {
delay(1) {
self.activityIndicatorView.isHidden = true
}
checkCanBack()
}
func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
activityIndicatorView.isHidden = true
if (urlString ?? "") != "" {
webView.addToBeSuppliedView(forText: "無法載入網頁")
} else {
checkCanBack()
}
}
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
return true
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment