在前面, 咱们已经了解过了 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