zoukankan      html  css  js  c++  java
  • 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


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

  • 相关阅读:
    YOLO V5 is Here! Custom Object Detection Tutorial with YOLO V5
    pjsip application notes
    Tilt Angle Visualization With Edison, Accelerometer and Python
    WebRTC 镜像源
    Get Started with WebRTC
    sqlserver关于发布订阅replication_subscription的总结
    在Flask中,g是什么?它的生命周期是?能做什么?
    46.全排列问题
    【LeetCode】代码模板,刷题必会
    QEMU+KVM学习笔记
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4529335.html
Copyright © 2011-2022 走看看