1. 程式人生 > >iOS基礎網路教程-Swift版本: 2.使用UIWebView請求資料

iOS基礎網路教程-Swift版本: 2.使用UIWebView請求資料

在前面, 我們已經瞭解過了 UIWebView, 以及網路的一些概念, 現在讓我們來做一個簡單的瀏覽器, 網路請求的一些細節~

在這裡, 我們會使用 UIWebView 與網路最簡單的互動, 那就是使用 URL 載入網路的資料.

1.搭建介面

1

2.實現網路互動

關聯控制元件, 以及獲取屬性

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! }

監聽點選事件

    @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 的代理方法

    // 使用 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
    }

3.最終效果

1
1
2
2
3
3

好了,這次我們就講到這裡, 下次我們繼續