[swift] UIwebviewにwebコンテンツを表示させる方法
目次
Swift4
Swift4でUIwebviewにwebコンテンツを表示させる方法は以下のコード
import Foundation import UIKit class WebViewController: UIViewController,UIWebViewDelegate{ // MARK: IBOutlet @IBOutlet var backButton: UIButton! @IBOutlet var forwardButton: UIButton! @IBOutlet var reloadButton: UIButton! @IBOutlet var myWebView:UIWebView! // 戻るボタンの処理 @IBAction func back(_: AnyObject) { self.myWebView?.goBack() } // 進むボタンの処理 @IBAction func forward(_: AnyObject) { self.myWebView?.goForward() } // 再読み込みボタンの処理 @IBAction func refresh(_: AnyObject) { self.myWebView?.reload() } // MARK: override override func viewDidLoad() { super.viewDidLoad() myWebView.delegate = self setup() } func setup(){ let url: NSURL = NSURL(string: "URL")! let request: NSURLRequest = NSURLRequest(url: url as URL) myWebView.loadRequest(request as URLRequest) } //ページが読み終わったときに呼ばれる関数 func webViewDidFinishLoad(_ webView: UIWebView) { self.backButton.isEnabled = self.myWebView!.canGoBack self.forwardButton.isEnabled = self.myWebView!.canGoForward } //ページを読み始めた時に呼ばれる関数 func webViewDidStartLoad(_ webView: UIWebView) { } }
Swift2
UIWebViewDelegate
viewControllerにUIWebViewDelegateを追加
class ViewController: UIViewController,UIWebViewDelegate {
実装
@IBOutlet var myWebView:UIWebView! override func viewWillAppear(animated: Bool) { myWebView.delegate = self let url: NSURL = NSURL(string: "[表示させたいURL]")! let request: NSURLRequest = NSURLRequest(URL: url) myWebView.loadRequest(request) } //ページが読み終わったときに呼ばれる関数 func webViewDidFinishLoad(webView: UIWebView) { } //ページを読み始めた時に呼ばれる関数 func webViewDidStartLoad(webView: UIWebView) { }
webViewが表示できるファイルの種類
webViewはhtmlだけでなく、下記ファイルも表示できる様子
Excel (.xls) Keynote (.key.zip) Numbers (.numbers.zip) Pages (.pages.zip) PDF (.pdf) Powerpoint (.ppt) Word (.doc) Rich Text Format (.rtf) Rich Text Format Directory (.rtfd.zip) Keynote '09 (.key) Numbers '09 (.numbers) Pages '09 (.pages)
webViewのキャッシュクリア
webViewはキャッシュを使用するので、一度表示させたページは基本的にキャッシュから読み込む
キャッシュをクリアするには以下のコードを実装
毎回新しいコンテンツを表示させたい場合はviewDidLoadの下に実装するのがよいかも
NSURLCache.sharedURLCache().removeAllCachedResponses()