斯坦福iOS7公开课11笔记及演示Demo&访问HTTPS链接下载数据
这一节主要介绍UITableView以及iPad,Demo为从Flicker下载图片并显示,但是实际过程中发现需要FQ并使用HTTPS连接,所以这次用了两个Demo,一个是课程中的Demo,另一个是简化的。
最后调试过程中还找到Xcode中观察变量的一个小技巧。
1.UITableView
UITableView是iOS中最常用的表视图,通讯录中的联系人、手机设置里的每一个选项都是表视图中的一个单元格cell,微信、微博每一条记录其实也是一个cell,只不过是组成要素更多一些而已。
(1)两个重要的协议
UITableViewDataSource和UITableViewDelegate是UITableView里两个重要的协议(可以把协议理解成接口),前者用来实现单元格数据源的控制,包括两个必须实现的:指定单元格cell数量以及分组数量,其他诸如删除、移动等操作也是通过实现这个协议里的方法来使用。


UITableViewDelegate,这个协议提供用户与UITableView交互操作的一系列方法,比如最常用的点击单元格的响应方法。

(2)cell的复用
为了节约资源,iOS会对cell进行复用,单独有一个地方存放移出屏幕的cell,当向上滑动UITableView时,如果队列中有可复用的cell,就可以直接取出使用,需要注意的是,这里的复用有一个限制条件,即cell的样式都相同。
2.iPad特有控件
iPad中有两种常用UI控件,弹出窗口UIPopoverController和目录-内容组合控件UISplitViewController,本次课程介绍了后者,UISplitViewController由两个视图组成,一个是目录视图master,一个是内容视图detail,Demo就是通过master中使用UITableView显示图片名称,点击后在内容视图detail里加载对应图片。
这里有两点值得注意:
(1)根据UISplitViewController为iPad独有控件直接判断设备是iPhone还是iPad,UISplitViewController默认0是master目录视图,1是detail内容视图,使用UISplitViewController下,如果获取不到内容视图,设备就是iPhone,反之iPad。

(2)UISplitViewController协议里提供了方法来解决横竖屏时master视图是否显示的问题 ,需要注意的是,UISplitViewControllerDelegate很特殊,需要在viewDidLoad之前设置

3.Demo过程问题总结
Flicker目前被墙,所以需要FQ访问,注册申请API的key即可,验证发现只能通过HTTPS访问,所以对FilckerFetcher里的地址都修改成HTTPS


下载得到的数据一直为nil,报错也是提示数据空,检查发现,请求HTTPS连接时不能使用+dataWithContentsOfURL:这个方法,因为无法设置安全验证相关,而请求HTTPS连接是必须对安全验证进行设置的,否则请求失败,所以得不到数据。
参考:http://stackoverflow.com/questions/14013307/datawithcontentsofurl-ios-https-self-signed-certificate
这里使用了NSURLConnection的委托方法,来使客户端忽略证书验证
参考:http://www.cnblogs.com/stan0714/archive/2012/03/21/2409872.html

还有其它方法,没有进行尝试,这种方法据说是苹果不允许的,提交应用时会有问题。
还遇到一个问题就是获取图片数据时报错,这是因为图片接收不完全,现象图片在屏幕上显示一小部分立即消失,原因是之前只接受了部分数据就马上转化图片,并通知主线程更新UI

实际上应该数据接收完全后再做后续操作,因为数据可能需要多次才传输完全。
同样问题后来也出现在获取图片列表的json数据时(之前调试时数据恰好一次就获取完全,没注意处理)

4.调试小技巧
用鼠标选中变量或者下方观察变量都可以,但有时始终觉得不方便,断点调试时可以在输出窗口输入“po 变量名”来观察变量赋值情况

Demo效果:
目前完整版Demo点击单元格还有bug,即第一次点击列表正常,第二次点击没有响应,"didSelectRowAtIndexPath"方法也没有进入。盼高手指点,若有更新也会及时补充。


斯坦福iOS7公开课11笔记及演示Demo&访问HTTPS链接下载数据的更多相关文章
- 斯坦福iOS7公开课10笔记及演示Demo
		
这一节主要介绍了多线程中的串行队列以及滚动视图UIScrollView. 1 .多线程 这一节只是简单介绍了多线程的串行队列,即把任务加入线程队列后按顺序逐步执行. (1)目前iOS多线程提供的方法主 ...
 - 斯坦福iOS7公开课4-6笔记及演示Demo
		
1.变量类型别滥用id,如果不仔细容易在程序执行时引发错误,因为在编译阶段编译器只是检测变量对象所属类型,尤其是类型为id时代表任何类型都可以通过检查,但不会检测变量对象调用的方法,这样当对象所属类不 ...
 - 斯坦福iOS7公开课7-9笔记及演示Demo
		
这一部分主要介绍了iOS的绘图.手势.协议.block.力学特效动画(包括重力.碰撞.吸附等)以及自动布局的内容. 1.绘图.手势 (1)调用一个自定义的UIView时,可以使用awakeFromNi ...
 - 斯坦福iOS7公开课1-3笔记及纸牌Demo
		
1.MVC Model:模型 描述程序是什么,例如数据库操作之类的行文以及纸牌Demo里纸牌玩法都是写在Model这一层,通过Notification和KVO(后续文章会介绍)两种方式与Control ...
 - 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记19 为Demo添加手势
		
在这一话中我们将应用上一话学到的知识来为Demo添加手势识别,首先添加一个缩放的功能,其次添加一个拖动功能,使得小人的表情可以随着我们的手指改变. 首先来添加一个缩放手势的识别器,我们来到FaceVi ...
 - 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记30 ScrollView Demo实战
		
在上一话中我们创建了一个通过URL读取图片的Demo,这个Demo是不能拖动和缩放的.如今给它添加选项让它能够手动切换URL,并把图片加入到ScrollView中. 向Storyboard中拖入一个s ...
 - 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记1 IOS8概述
		
首先感谢网易公开课和SwiftV课堂的朋友们辛苦翻译,这个系列是我学习斯坦福IOS8公开课的个人心得体会和笔记,希望能给大家带来启发. 首先我们要知道IOS系统中的结构情况,从贴近硬件的底层到贴近用户 ...
 - 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记2 Xcode、Auto Layout及MVC
		
原文链接不知道在哪, 接着上一话来讲,上一话中讲到了MVC,那么MVC在IOS8开发中是如何应用的呢?Paul Hegarty老师给我们展示了一个计算器的Demo,首先新建一个工程,老师把AppDel ...
 - 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记38 Unwind Segue反向过渡
		
之前我们接触过了segue,这是IOS中最主要的传递方式,今天来解说一下怎样进行反向的segue. 反向过渡的使用前提是发出过渡的MVC必须是由目标MVC直接或者间接正向过渡来的.反向过渡是唯一不会创 ...
 
随机推荐
- 正则表达式之IP地址检验
			
String ipRegex = "^(\\d|[1-9]\\d|1\\d*|2[0-4]\\d|25[0-5])(\\.\\1){3}$"; /* * \\d|[1-9]\\d| ...
 - Install Redis on CentOS 6.4--转
			
Install Redis on CentOS 6.4 source:http://thoughts.z-dev.org/2013/05/27/install-redis-on-centos-6-4/ ...
 - [python基础知识]python内置函数map/reduce/filter
			
python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...
 - 妹味6:ajax与ajax封装
			
(功能)ajax能且仅能 从服务器读取文件 (环境)需要服务器环境才能测试,可以用工具建立本地服务器环境 (缓存)解决缓存问题:url加时间戳让每次请求地址唯一,如 url='abc.txt?t='+ ...
 - 对于大于8046 bytes的行,RCSI/SI事务隔离级别无效
			
自SQL Server 2005起,我们有了READ COMMITTED SNAPSHOT ISOLATION level (RCSI) 和SNAPSHOT ISOLATION level (SI)两 ...
 - 使用自带的JavaScriptSerializer序列化实体  指定的属性如何不序列化
			
public class GridConfig { public string width = "100%"; public string source = "dataA ...
 - Jquery几个比较实用,但又让很多人忽略的几个函数
			
工作中接触的人中,这些函数的使用频率比较少,我用的又比较好用的几个函数 来给大家分享一下. 你有你喜欢的,也可以分享一下 1.filter 使用了我要什么就有什么 这个函数不但可以很方便的筛选自定义H ...
 - AC自动机 - 多模式串的匹配运用 --- HDU 2896
			
病毒侵袭 Problem's Link:http://acm.hdu.edu.cn/showproblem.php?pid=2896 Mean: 略 analyse: AC自动机的运用,多模式串匹配. ...
 - 当kfreebsd 用户遇见openSUSE系统
			
openSuse的系统工具集覆盖了四大主流桌面环境,是针对每一种桌面环境定制的独立的桌面体验.
 - php生成静态文件
			
1,通用生成方法 //获取文件内容 $content=file_get_contents("http://www.google.com/" ); $id=110; $filenam ...