求助,用swift写一个swift 打开网页百度的方法

Swift轻松入门——基本语法介绍和详细地Demo讲解(利用WebView打开百度、新浪等网页)
  转载请务必注明出处(all copyright reserved by iOSGeek)
  本文主要分为两个部分,第一部分介绍Swift的基本语法,第二部分讲解一个利用WebView来打开百度、sina等网页的小demo,如果对swift的语法不感兴趣的同学可以直接跳到第二部分来感受下Swift的魅力~(本文的demo源码已上传至github:/iOSGeek0829/XSurfing)
一、Swift常用语法
  Swift是Apple去年推出的一门新的语言,基于C和Objective-C,而没有C的一些兼容约束,它采用了安全的编程模式和添加现代的功能来使得编程更加简单、灵活和有趣(以上copy自百度)。在Swift语言中你会发现JS、Java、C++等的影子,所以Swift被网友戏称为&伍仁&语言,好了,话不多说我们开始介绍Swift的基本语法。
  1、常量、变量定义  
定义常量用let关键字 let country = "China",定义变量用var关键字var team = "HiLink",注意:Swift与Objective-C的区别&&定义字符串不需要加"@",常量、变量的类型是可选的,如果在声明的同时就赋值的话,编译器会自己推断出变量类型,比如county和team就是字符串类型,再比如说定义var pi = 3,那么pi就是int类型,那我想让pi变为float类型该怎么办呢?我们只需在声明的时候显示地制定类型就可以了,比如var pi:Float = 3,此时pi就是float类型了
  2、数组、字典定义
1 数组、字典用[]来定义,可以用下标或键(key)来访问,比如var animals = ["dog","cat","moneky"]定义一个动物数组,再比如var webSites = ["baidu":"","sina":""]定义一个网址字典,用webSites["baidu"]来获取&baidu&的value,即webSites["baidu"] == && 2 ,如果要创建空的数组或者字典,就需要使用初始化语法,比如var animals = [String]() 3 var webSites = [Dictionary&String,String&].self
  3、控制流if、switch、for-in、while
Swift在控制流语法中最大的特色是:包裹条件和循环变量括号可以省略,但内容体的大括号是必须的。比如: var salarys = [5000,10000,15000,20000] for salary in salarys {
if salary & 15000
println("有钱淫~")
println("穷屌丝~")
} } 可以看到if的条件部分可以不用(),另外if的条件语句必须是Bool类型,如果把上述例子改为: if salary {
println("有钱淫~") } 则编译器会提示错误,注:println类似Objective-C的NSLog()。 再讲一下Switch语句,Swift中的Switch语句支持任意类型的数据&&不仅仅是整数哦,另外switch中每个case不需要在末尾加break,只要执行了一个case后自动跳出,不会依次往下执行,例子代码如下: let today = "Friday" switch today {
case "Monday":
println("fuck day!")
case "Friday":
println("nice day!")
println("fighting day!") } while循环没什么特殊的就不赘述了~
  4、函数
swift用func来定义函数,函数原型为:func 函数名(参数1,参数2...) -& 返回类型,示例代码如下: func whoami() -& String {
return "Jackie Chan" }
  5、类和对象  
1 swift中类用class来定义,类中的变量和方法与普通的变量与函数定义一致,没什么区别,对象就用类名+构造方法生成,例子代码如下:
2 class Car
var name:String
init(name:String)
self.name = name
func carName() -&String 10
return name 12
} 13 } 14 var domesticCar = Car(name: "BYD") 15 domesticCar.carName()
  6、类型后面跟?或者!以及as
1 swift中如果在声明一个变量时不手动初始化,swift不会为该变量自动赋一个默认值,但对于Optinal的变量则不同,Optinal类型的变量如果没初始化,则swift自动会为该变量赋为nil。那怎么声明一个Optional变量呢?只要在声明时在类型后面加上? 或者!就行了,比如 2 var urlRequest:NSURLRequest? //urlRequest == nil 3 而?和!的区别就是:?表示该变量可能为nil也可能不为nil,而!则表示该变量肯定不为nil。 4 另外as表示类型转换,比如 5 webAddress = item.objectForKey(webName[0]) as! String 6 表示把value强制转换为String类型。
  呼~~~~swift基本语法终于讲完了,让我们休息一下吧~
二、利用WebView打开百度、新浪等网页(Swift版本)(本文的demo源码已上传至github:/iOSGeek0829/XSurfing)
  如果您已经看到这儿了,说明您是一位非常有耐心的人,wish you achieve your dream~~(haha~~~)
  这一部分主要讲解一个利用WebView来打开百度、新浪等网页的小demo,最终实现的效果如下所示:(点击相关的网站名称,然后跳转到另一个界面来显示对应的网站内容,界面太丑,只是用来演示,勿拍~)
   & & & & & & & & & & & & & & & & & & & & & & & & && & & & & & &
    & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &网站选择界面 & & & & & & & & & & & & & & & &对应的网页显示界面
下面来讲解实现部分:
1、界面实现:
  界面主要在storyboard中实现,&网站选择界面&是一个UITableviewController,&网页显示界面&是普通的UIViewController+WebView,整个界面的实现非常简单,截图如下所示:
2、逻辑部分
  主要分为2个ViewController,一个是&网站选择&Controller,另一个是&网页内容显示&ViewController。
  &网站选择&Controller源码如下:(看注释就能明白了)
ViewController.swift
Created by huixinming on 6/24/15.
Copyright (c) 2015 huixinming. All rights reserved.
9 //引入相关头文件 10 import UIKit 11 import Foundation 12
13 class ViewController: UITableViewController { 14
//创建相关网站字典模型 15
let baidu = ["百度":""] 16
let sina = ["新浪":""] 17
let phoenix = ["凤凰网":""] 18
//用于存储需要显示的网站 19
var webSites:NSMutableArray 20
//选择的网址,默认是百度 21
var webAddress:String = "" 22
//storyboard创建controller必须要实现的初始化方法,可以在此处给成员变量赋初值 23
required init!(coder aDecoder: NSCoder!) { 24
//把要显示的网站添加进来,有个疑问是:在该方法中super.init方法必须在初始化完子类的成员变量后才能调用 25
webSites = [baidu,sina,phoenix] 26
super.init(coder: aDecoder) 27
//覆盖父类的相关方法 29
override func viewDidLoad() { 30
super.viewDidLoad() 31
// Do any additional setup after loading the view, typically from a nib. 32
//设置该ViewController的title和根View的背景色 33
self.navigationItem.title = "XSuring" 34
self.view.backgroundColor = UIColor.redColor() 35
override func didReceiveMemoryWarning() { 37
super.didReceiveMemoryWarning() 38
// Dispose of any resources that can be recreated. 39
//覆盖UITableView的相关delegate方法 41
override func numberOfSectionsInTableView(tableView: UITableView) -& Int 42
return 1 44
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -& Int 46
//返回要显示的行数 48
return webSites.count 49
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -& UITableViewCell 51
//设置cell的相关显示 53
let cellIdentifier:String = "webCell" 54
var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as! UITableViewCell 55
var row = indexPath.row 56
var item = webSites[row] as! NSDictionary 57
var webName:NSArray = item.allKeys 58
cell.textLabel?.text = webName[0] as? String 59
return cell 60
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 62
var row = indexPath.row 64
var item = webSites[row] as! NSDictionary 65
var webName:NSArray = item.allKeys as NSArray 66
webAddress = item.objectForKey(webName[0]) as! String 67
//点击时跳转到&网页内容显示界面,showDetailWebContent是storyboard segue identifier& 68
self.performSegueWithIdentifier("showDetailWebContent", sender: self) 69
//把选中的网站url传递给&网页内容显示controller& 71
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 72
var webViewController = segue.destinationViewController as! WebViewController 74
webViewController.detailURL = webAddress 75
&网页内容显示&ViewController源码如下:(看注释就能明白了)
WebViewController.swift
Created by huixinming on 6/26/15.
Copyright (c) 2015 huixinming. All rights reserved.
8 import UIKit
9 import Foundation 10
11 class WebViewController: UIViewController,UIWebViewDelegate { 12
@IBOutlet weak var webView: UIWebView! 13
var tipLabel:UILabel 14
var loading:UIActivityIndicatorView 15
//需要加在的url,默认是百度 16
var detailURL:String = "http//" 17
var urlRequest:NSURLRequest? 18
required init(coder aDecoder: NSCoder) { 19
//初始化提示语和加载框 20
tipLabel = UILabel(frame: CGRectMake(20, 100, 400, 200)) 21
loading = UIActivityIndicatorView(activityIndicatorStyle:.Gray) 22
super.init(coder: aDecoder) 23
override func viewDidLoad() { 25
super.viewDidLoad() 26
//构建url请求对象 27
var url = NSURL(string: detailURL) 28
urlRequest = NSURLRequest(URL: url!) 29
webView.loadRequest(urlRequest!) 30
//把webview的委托设为自己 31
webView.delegate = self 32
tipLabel.backgroundColor = UIColor.clearColor() 33
tipLabel.numberOfLines = 0 34
webView.scrollView.addSubview(loading) 35
loading.center = webView.center 36
func webViewDidStartLoad(webView: UIWebView) 38
//开始加载网页时显示loading框 40
loading.startAnimating() 41
func webViewDidFinishLoad(webView: UIWebView) 43
//当网页加载完成后,消失loading框和提示语 45
loading.stopAnimating() 46
tipLabel.removeFromSuperview() 47
func webView(webView: UIWebView, didFailLoadWithError error: NSError) 49
//当网页加载失败时,消失loading框,显示提示语 51
loading.stopAnimating() 52
tipLabel.text = "ERROR!" 53
view.addSubview(tipLabel) 54
啊~~终于完了,相信聪明的你看到这儿应该会用swift做个小小的demo了吧,快去试试吧,祝你玩的愉快!!
(本文的demo源码已上传至github:/iOSGeek0829/XSurfing)
PS:文章标题之所以叫&swift轻松入门&纯粹只是为了吸引眼球,其实自己对swift也只是了解了最最基本的,只看完了swift tour部分,如果想深入了解swift还需多阅读Apple给出的&The Swift Programming Language&和&Using Swift with Cocoa and Objective-C&文档。
祝大家玩的开心!!!!接上一片博文,我们已经创建好了桥接文件.那么如何调用?
在项目最开始的时候,我写了这个项目使用cocoapod管理依赖库,在这里,还是多记录一下吧.
1 在你的已经安装好cocoapod的电脑上,打开终端,输入pod search baidumapapi ,得到的结果如下:
剪头中的就是我们需要的,然后在我们的项目中的podfile中把pod 'BaiduMapAPI' '~&2.8.1'加进去并且保存
2 加好了类库当然需要安装到项目中,所以输入pod install,等待安装完毕
3 重新打开项目,发现项目结构变成如下模样:
&然后打开我们的桥接文件,引用百度地图的头文件
command + B 试试是否编译成功,成功就可进行下一步了.
4 本来项目开始应该进入的是首页,但是上面既然写了如何使用百度地图API,那么就直接写在这里,后面写到使用百度地图的页面就不写了..
& &代码如下:
& &① 首先在appdelegate里添加红色框框里的代码,里面剪头部分需要你到百度官网拿项目的bundle identify来生成一个key,不要按照我这个写啊
& & ② &然后在控制器里代码如下:
import UIKit
class ViewController: UIViewController ,BMKMapViewDelegate ,BMKLocationServiceDelegate{
& & var mapView: BMKMapView!
& & var locService: BMKLocationService!
& & override func viewDidLoad() {
& & & & super.viewDidLoad()
& & & & // Do any additional setup after loading the view, typically from a nib.
& & & & mapView = BMKMapView(frame: self.view.frame) &//创建地图的view
& & & & self.view = mapView & //让百度地图的view成为控制器的view
& & & & //设置定位精准度
& & & & BMKLocationService.setLocationDesiredAccuracy(kCLLocationAccuracyBest)
& & & & //指定最小距离更新,单位是米
& & & & BMKLocationService.setLocationDistanceFilter(10)
& & & & //初始化定位服务
& & & & locService = BMKLocationService()
& & & & //启动定位服务
& & & & locService .startUserLocationService()
& & & & mapView.showsUserLocation = false
& & & & //设置位置跟踪态
& & & & mapView.userTrackingMode = BMKUserTrackingModeNone
& & & & //显示定位图层
& & & & mapView.showsUserLocation = true
& & & & //设置是否支持多点(缩放)
& & & & mapView .zoomEnabled = true
& & & & //手机比例尺中可以显示的级别& 最高为19
& & & & mapView .zoomLevel = 19
& & //定位代理
& & //用户方向更改后
& & func didUpdateUserHeading(userLocation: BMKUserLocation!) {
& & & & mapView.updateLocationData(userLocation)
& & //位置更新后
& & func didUpdateBMKUserLocation(userLocation: BMKUserLocation!) {
& & & & mapView.updateLocationData(userLocation)
& & & & //移动定位的位置到屏幕中间
& & & & mapView .setCenterCoordinate(userLocation.location.coordinate, animated: true)
& & override func viewWillAppear(animated: Bool) {
& & & & mapView.viewWillAppear()
& & & & mapView.delegate = self & //在控制器view将要显示的时候设置mapview以及定位的Locservice的代理为控制器
& & & & locService.delegate = self
& & override func viewWillDisappear(animated: Bool) {
& & & & mapView.viewWillDisappear()
& & & & mapView.delegate = nil & &//在控制器view将要消失的时候设置mapview以及定位的locservice的代理为nil ,具体原因去查看百度地图的api,里面有说明
& & & & locService.delegate = nil
&5 代码写完之后,当你运行程序可能发现无法进行定位,那么这个有可能是你的plist文件少加入了一些东西,一起发上来;
  这里二选一的,我选择的一直在后台运行,也可以选择另外一个属性,使用时候运行,至于key我不太记得了.自己在百度地图论坛可以找到.
&这里顺带说一下,在iOS9之后,苹果开启了ATS,这个服务其实是需要https支撑的,估计苹果的目的也就是反向逼迫开发者们增强自己的APP安全,但是有时候公司是不想花钱去买那个HTTPS的证书,毕竟国人都喜欢免费的,有http可以用,为什么要一年花一两千去买个证书呢?所以这里有一个方法关闭ATS,也是在plist文件里添加.如下;
设置这个之后,一些AFN之类的第三方类库又可以正常使用了.
今天内容完毕..明天继续...
阅读(...) 评论()求助,用swift写一个打开百度的方法_百度知道
求助,用swift写一个打开百度的方法
我有更好的答案
右键,出来好多项,点击第三个
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁从零开始用Swift写一个V2EX客户端_swift吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:30,798贴子:
从零开始用Swift写一个V2EX客户端收藏
最近在学习Swift,稍微看了下语法,挺感兴趣的学语言最快捷的方法当然就是直接做个项目,所以开了个坑。有感兴趣的新手可以跟着我的项目一起学,不懂的都可以私信问我,我都会一一回答。我觉得对新手们还是有好处的,可以看看一个项目是怎么开发的。。而我也能在和你们交流中查漏补缺,更好的学习Swift每天都会更新,现在处于刚开始阶段项目地址:
福利不只是穿多穿少,还要有迷人的微笑!
来一波小结- 项目纯代码编写 不适用IB Storyboard- SnapKit 做自适应适配,这玩意和 OBJC 里的 Masonry 是一样的,依然那么好用(个人觉得是iOS自适应中非常快速简单优雅的写法)- Ji 做HTML 解析,速度挺快的,关键是解析非常简单- Alamofire 做网络请求 没什么好说的,大神力作,好用的1B- ObjectMapper + AlamofireObjectMapper 做 JSON 转 Model ,这俩玩意配合Alamofire 实现 发送请求直接得到 swift 类实例。他们三无缝结合太好使了!- FINAutomaticHeight 自动计算Cell的高度 ,带缓存 ,并且之后会支持 APP空闲时预计算Cell高度。 自己写的,并不是很完善... 还有很多自己比较喜欢的套路 正在实现上个开坑效果图吧 刚开始没多久。希望自己能保持每天都更新~
一小波小结新增库KVOController - FaceBook 出品的 KVO 库 ,非常好用,但是只有OC版本,不过在swift里也可以安全使用DrawerController - 侧边栏框架 有对应的OC版本,成熟的框架Kingfisher - 对应SDWebImage 给UIImageView 设置网络图片新增功能-帖子详情 -侧边栏 tab导航
很棒.一起学习.刚刚star了
后台谁做的
最近进度慢了,希望周末来一波高产来一张 登陆界面,缺少了两个ICON,背景稍微有点动画渐变 ,
楼主 xcode7.2 各种补全很烂怎么破
添加侧边栏的UI。 下一步就是添加首页帖子列表UI 、 帖子详情的UI 和 完成 回复、发帖功能
20年前的ps游戏全新复刻驾临pc端
一小波小结新增库 - SVProgressHUD
iOS实际开发中 常用的提示框- MJRefresh 实际开发中 优秀的 下拉刷新 上拉加载控件 ,我用这个控件提供的接口 初步实现了 符合自己项目设计样式的 下拉刷新UI (还没写完)- FXBlurView 模糊一个视图,使用库- YYText 富文本库 。。 功能爆炸多的 第三方库新增功能 - 评论功能等相关- 登陆功能- 下拉刷新
添加 个人中心... 等页面
楼主你的drawercontroller是自己写的么
一大波更新
请问我使用Pod install 后,打开项目,不能引用Pods下面的第三方库,不知道为什么,import Ji
等等都是报没有这个文件,是为啥呢?
刚刚学完swift语法 想跟你一起学习下啊 怎么加入呢
非常棒!!已经在app store 看到了. 我也跟你学习
这个 要向你学习
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或【求助】求大神讲解一下怎么在swift中使用百度地图SDK_swift吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:30,798贴子:
【求助】求大神讲解一下怎么在swift中使用百度地图SDK收藏
如题,百度上官方的讲解是使用OC的,小白不是太明白OC,不清楚在SWIFT中怎么使用百度地图SDK,求大神指导分享~~~~
福利不只是穿多穿少,还要有迷人的微笑!
高德地图支持swift,可以试试
图片来自:图片来自:
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或}

我要回帖

更多关于 swift 打开网页 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信