• 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


    好了,这次我们就讲到这里, 下次我们继续

  • 相关阅读:
    拖拽 上传文件
    复制文本消息
    zTree 显示为‘aa’,当选择aa时,传的参数为‘22’
    移动端 动画 启动硬件加速
    jquery 停止动画与切换
    CSS小技巧-怎样让每行多余的文字显示文省略号?
    CSS小技巧-两个盒子之间的间距问题
    CSS小技巧-为内盒子添加margin-top时,会带着父盒子一起下来,如何解决?
    小K的H5之旅-CSS基础(一)
    小K的H5之旅-HTML的基本结构与基本标签
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4529335.html
Copyright © 2020-2023  润新知