1 概览
这个例子主要完成了一个表格视图的展示,其中每个单元格内容可能不同,高度也可能不一样,需要动态适应。这个demo做的事情就是从一个RSS地址拉取数据,然后在表格展示。主要知识点有AutoLayout,UITableView以及CocoaPods的使用。AutoLayout前一篇文章已经有分析过,UITableView是本文的重点,后面会介绍。
而CocoaPods新出现的一个东东,它是iOS开发中一个第三方库的依赖管理工具,类似于java中的mvn和nodejs中的npm等。详细信息可以参见唐巧大大的文章介绍[用CocoaPods做iOS程序的依赖管理。我这个demo中用到的Podfile内容如下,可以看到这个demo中需要用到AFNetworkActivityLogger, MediaRSSParser,MBProgressHUD这三个库。AFNetworkActivityLogger是AFNetworking2.0的一个扩展,是开发中很常用的第三方库,封装了一些网络请求,可以大幅简化我们的代码。而MediaRSSParser是这个demo才用到,用于解析RSS文件。MBProgressHUD也是很常用的一个库,用于提示进度,类似好比我们自己手写的那些ActivityIndicator,当然比我们手写要方便很多。
我们只需要在工程目录下运行pod install,就会下载好第三方库了。如果运行命令卡住了的话,可以用这个命令pod install --verbose --no-repo-update.
platform :ios, '8.0'
pod 'AFNetworkActivityLogger', '~> 2.0'
pod 'MediaRSSParser', '~> 1.0'
pod 'MBProgressHUD', '~> 0.9'
2 创建Scene
本demo创建了3个Scene(除去导航栏),Storyboard界面如下:
图1 初始Storyboard
其中Deviant Art为列表页面,Deviant Article为不带图片的详情页,而Deviant Media则为带图片的详情页。其中:
Devian Art顶部有一个嵌入的Navigation Bar(导航栏,边上有一个刷新按钮用于重新加载数据),下面有一个Text Field控件的搜索框,搜索框下面是一个Table View,用于展示作品列表。注意,我们这里还没有添加Table View Cell,稍后我们会看到怎么自定义这个Cell。
Devian Article为不含图片的作品详情页。这个场景只有两个Label,分别是标题和副标题。
Devian Media为带图片的作品详情页。这个场景除了标题和副标题两个Label外,还有一个Image View。
3 解析RSS
解析RSS借助了第三方库RSSParser来实现。代码如下:
(void)parseForQuery:(NSStr