在前面, 咱們已經瞭解過了 UIWebView, 以及網絡的一些概念, 如今讓咱們來作一個簡單的瀏覽器, 網絡請求的一些細節~css
在這裏, 咱們會使用 UIWebView 與網絡最簡單的交互, 那就是使用 URL 加載網絡的數據.web
關聯控件, 以及獲取屬性瀏覽器
class ViewController: UIViewController, UISearchBarDelegate, UIWebViewDelegate {
// 搜索欄
@IBOutlet weak var searchBar: UISearchBar!
// WebView
@IBOutlet weak var webView: UIWebView!
// 後退Button
@IBOutlet weak var goBack: UIBarButtonItem!
// 前進Button
@IBOutlet weak var goForward: UIBarButtonItem!
}
監聽點擊事件markdown
@IBAction func goToBack(sender: UIBarButtonItem) {
webView.goBack()
}
@IBAction func goToForward(sender: UIBarButtonItem) {
webView.goForward()
}
加載網絡數據網絡
override func viewDidLoad() {
super.viewDidLoad()
// 1.設置訪問資源 - 百度搜索
let url = NSURL(string: "http://www.baidu.com")!
// 2.創建網絡請求
let request = NSURLRequest(URL: url)
// 3.加載網絡請求
webView.loadRequest(request)
// 4.設置 UISearchBar 的代理對象
searchBar.delegate = self
webView.delegate = self
}
UISearchBar 的代理方法ide
// 使用 UISearchBar 的代理方法
func searchBarSearchButtonClicked(searchBar: UISearchBar) {
// 1.獲取當前 UISearchBar 的 Text
var str = searchBar.text
// 2.判斷 UISearchBar 是否有前綴, 若是有, 就使用自定義的網址, 若是沒有就默認使用百度搜索
if !str.hasPrefix("http://") {
str = "http://www.baidu.com/s?word=" + str
}
// 3.將輸入的文字或者是須要搜索的東西轉成 UTF8 格式, 而且解包
let url = NSURL(string: str.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)
// 4.創建網絡請求
let request = NSURLRequest(URL: url!)
// 5.加載網絡請求
webView.loadRequest(request)
// 6.關閉 UISearchBar 的彈出鍵盤
self.view.endEditing(true)
}
優化體驗優化
// UIWebView 代理方法, 自動檢測是否有加載過數據, 若是有的話就會根據系統的判斷來顯示前進或者後退的按鈕
func webViewDidFinishLoad(webView: UIWebView) {
self.goBack.enabled = webView.canGoBack
self.goForward.enabled = webView.canGoForward
}
1
2
3
url
好了,此次咱們就講到這裏, 下次咱們繼續spa