




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、iPhone开发教程之开发基于 IBM Lotus Connections 2.5 的社交网络 iPhone 应用程序(3),清单 8. 保存标题元素文本值 在 iPhone 上显示数据 清单 9. 实现 viewDidLoad 清单 10. 创建 UITableViewCells 清单 11. 获取 UITableView 中的行数和段数 调整应用程序性能 清单 12. 设置和获取缓存的 NSArray 条目 结束语,/ - (void) parser: (NSXMLParser*) parser didEndElement: (NSString*) elementName namespac
2、eURI: (NSString*) namespaceURI qualifiedName: (NSString*) qName if (elementName isEqualToString:title ,清单 8. 保存标题元素文本值,最后,要准备好数据,让它显示在 iPhone 上希望用户看到的地方。 当解析完成后,就有了可在表格中显示的 NSString 条目数组。要实现 tableview,加载条目数组调用 _tableView reloadData 中的表格数据,如清单 4 中所示。这段代码调用了tableview 委托方法实现 tableView:cellForRowAtIndex
3、Path:。由于 SampleApplicationViewController.m 是 tableView 委托方法,因此可以调用该类中定义的方法。可以看到在 viewDidLoad 方法中设置了 tableView 委托和数据源。这段代码在 NSURLRequest 和 NSURLConnection 代码之前。,在 iPhone 上显示数据,/ Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad super viewDi
4、dLoad; _tableView = UITableView alloc initWithFrame:self.view.bounds autorelease;,清单 9. 实现 viewDidLoad,self.view addSubview:_tableView; _tableView.delegate = self; _tableView.dataSource = self; /Blogs Atom feed API NSURL *url = NSURL alloc,initWithString: stories/public?source=blogs,加载 UITableView 时
5、,它调用 tableView:cellForRowAtIndexPath: 的次数等于屏幕上可见单元格的个数。例如,如果屏幕高度是 100 个像素,每个单元格高度是 10 个像素,那么它调用了 10 次该方法。该方法返回一个 TableViewCell 类实例。该实例是表格中显示的数据的布局。当用户滚动表格时,每当有单元格显示在屏幕上,就会调用 tableView:cellForRowAtIndexPath:。每次 UiTableView 调用该方法时,它都会传递一个 indexPath,这是它要返回的 UITableViewCell 值。在此应用程序示例中,传回了一个 UITableView
6、Cell,它带有在 UITableViewCell 中的 textLabel 设置的博客条目标题。,/ Customize the appearance of table view cells. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath static NSString *CellIdentifier = Cell; UITableViewCell *cell = tableView dequeueReusableCellWith
7、Identifier:CellIdentifier;,清单 10. 创建 UITableViewCells,if (cell = nil) cell = UITableViewCell alloc initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier autorelease; NSString* title = NSString alloc initWithString:_items objectAtIndex:indexPath.row; cell.textLabel.font = UIFont sy
8、stemFontOfSize:12; cell.textLabel.text = title; / Configure the cell. return cell; ,最后,UiTableView 需要知道在表格中显示多少行。您只要显示条目数组中的表格行数即可。由于 API 调用请求 30 条,条目数组大小就是 30。只要确保表格视图数据源实现了 tableView: numberOfRowsInSection:。该方法返回了基于数组大小的 tableView 的大小,本例中是 30。,- (NSInteger)numberOfSectionsInTableView:(UITableView
9、*)tableView return 1; - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger) section return _items count; ,清单 11. 获取 UITableView 中的行数和段数,这个应用程序示例未包含当用户选择 UITableViewCell 时访问的明细视图,就像 My developerWorks 应用程序那样;但是可以通过实现 tableView:didSelectRowAtIndexPath: 来完成这项任务。在此方法中,初始化另一个 U
10、IViewController 并让应用程序导航到这个视图,从而显示一个 UITableViewCell 的明细视图。 恭喜!经过这一系列步骤之后,您的 iPhone 应用程序示例已经能够显示来自 Lotus Connections 的最新 30 条博客,它应该像图 2 这样。,图 2. Windows Picture 和 Fax Viewer,当使用 Lotus Connections Atom APIs 的时候,您可能会想要实现一个本地缓存,以优化 iPhone 应用程序性能,这取决于您的应用程序要显示什么。 以下是需要考虑的问题: 如果您的应用程序访问的数据不常更新,例如用户的配置文件,
11、那就应该实现缓存。 如果获取的数据经常更新,如博客应用程序示例中的数据,就没必要用缓存,因为它不会显示最新的用户数据。,调整应用程序性能,可以实现不同级别的缓存。可以缓存从连接请求返回的 NSMutableData 中的结果。这种方法可以节省应用程序每次加载时下载提要的时间。该应用程序仍需要每次在显示缓存数据前解析。 或者,您可以缓存条目数组中已解析的数据。这种方法就不需要下载摘要并在显示前解析。 要缓存条目数组,存储在数组中的对象要遵守 NSCoding。在应用程序示例中,条目数组将标题保存为 NSString 对象;因此,它能在应用程序中被缓存到磁盘上。,/ +(void)cacheIte
12、ms:(NSArray*)items NSString *kFile = cachedArrayFile; NSString *kArray = Array; NSMutableData *theData; NSKeyedArchiver *encoder; theData = NSMutableData data; encoder = NSKeyedArchiver alloc initForWritingWithMutableData:theData;,清单 12. 设置和获取缓存的 NSArray 条目,encoder encodeObject:items forKey:kArray;
13、encoder finishEncoding; NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = paths objectAtIndex:0; NSString *path = documentsDirectory stringByAppendingPathComponent:kFile;,theData writeToFile:path atomically:YES; encoder
14、release; / +(NSMutableArray *)getCachedItems NSString *kFile = cachedArrayFile; NSString *kArray = Array; NSMutableArray *tempArray = NSMutableArray array;,NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = paths objectAt
15、Index:0; NSString *path = documentsDirectory stringByAppendingPathComponent:kFile; NSFileManager *fileManager = NSFileManager defaultManager; if(fileManager fileExistsAtPath:path) /open it and read it NSMutableData *decodeData; NSKeyedUnarchiver *decoder;,decodeData = NSData dataWithContentsOfFile:path; decoder = NSKeyedUnarchiver alloc initForReadingWithData:decodeData; tempArray = decoder decodeObjectForKey:kArray; decoder finishDecoding; decoder release; return tempArray; ,使用 Lotu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乘坐公务飞机管理办法
- 人员在岗状态管理办法
- 丽江道路照明管理办法
- 企业办公电话管理办法
- 中药药品注册管理办法
- 中铁食堂食堂管理办法
- 乌当区小作坊管理办法
- 产业担保贷款管理办法
- 产品物料运输管理办法
- 产妇产后监测管理办法
- 哈尔滨市普通住宅小区物业服务等级指导标准
- 汉语文化传播研究:以中国语言文化为视角
- 电梯电气装置绝缘电阻检测记录
- 医疗机构消防安全管理
- 食堂食品安全应急处置方案
- 退出中华人民共和国国籍申请表
- 西方经济学(第二版)完整整套课件(马工程)
- 检验科安全管理制度汇总
- 英语音标拼读方法讲解
- MT 113-1995煤矿井下用聚合物制品阻燃抗静电性通用试验方法和判定规则
- GB/T 16841-2008能量为300 keV~25 MeV电子束辐射加工装置剂量学导则
评论
0/150
提交评论