iOS文档预览功能教程

ios 4 sdk中支技文档的预览功能,何为预览?就是你打印文件时的预览功能。其用到quicklook.framework,它支持的文档格式有:iWork documents, Microsoft Office, Rich Text Format, PDF, images, text files and comma-separated (csv) files.


今天show一个demo,展示其用法:


第一步:创建一个基于view的工程,并加入quicklook.framewrok

第二步:修改Controller的头文件如下:

#import <QuickLook/QuickLook.h> @interface TestViewController : UITableViewController <QLPreviewControllerDataSource> { NSArray *arrayOfDocuments; } @end
修改 controller执行文件如下

#import "TestViewController.h" @implementation TestViewController #pragma mark - #pragma mark Initialization /*--------------------------------------------------------------------------- * *--------------------------------------------------------------------------*/ -(id)init { if (self = [super init]) { arrayOfDocuments = [[NSArray alloc] initWithObjects: @"iOSDevTips.png", @"Remodel.xls", @"Core J2ME Technology.pdf", nil]; } return self; } /*--------------------------------------------------------------------------- * *--------------------------------------------------------------------------*/ - (void)loadView { [super loadView]; [self setTitle:@"Files Available for Preview"]; } #pragma mark - #pragma mark Table Management // Customize the number of sections in the table view. /*--------------------------------------------------------------------------- * *--------------------------------------------------------------------------*/ - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } /*--------------------------------------------------------------------------- * *--------------------------------------------------------------------------*/ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [arrayOfDocuments count]; } /*--------------------------------------------------------------------------- * *--------------------------------------------------------------------------*/ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"tableRow"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; // ??? [[cell textLabel] setText:[arrayOfDocuments objectAtIndex:indexPath.row]]; [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator]; return cell; } /*--------------------------------------------------------------------------- * *--------------------------------------------------------------------------*/ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // When user taps a row, create the preview controller QLPreviewController *previewer = [[[QLPreviewController alloc] init] autorelease]; // Set data source [previewer setDataSource:self]; // Which item to preview [previewer setCurrentPreviewItemIndex:indexPath.row]; // Push new viewcontroller, previewing the document [[self navigationController] pushViewController:previewer animated:YES]; } #pragma mark - #pragma mark Preview Controller /*--------------------------------------------------------------------------- * *--------------------------------------------------------------------------*/ - (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller { return [arrayOfDocuments count]; } /*--------------------------------------------------------------------------- * *--------------------------------------------------------------------------*/ - (id <QLPreviewItem>)previewController: (QLPreviewController *)controller previewItemAtIndex:(NSInteger)index { // Break the path into it's components (filename and extension) NSArray *fileComponents = [[arrayOfDocuments objectAtIndex: index] componentsSeparatedByString:@"."]; // Use the filename (index 0) and the extension (index 1) to get path NSString *path = [[NSBundle mainBundle] pathForResource:[fileComponents objectAtIndex:0] ofType:[fileComponents objectAtIndex:1]]; return [NSURL fileURLWithPath:path]; } #pragma mark - #pragma mark Cleanup /*--------------------------------------------------------------------------- * *--------------------------------------------------------------------------*/ - (void)dealloc { // Free up all the documents [arrayOfDocuments release]; [super dealloc]; } @end
修改Appdelegate如下

- (void)applicationDidFinishLaunching:(UIApplication *)application { // Create and initialize the window window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Create test view controller vc = [[TestViewController alloc] init]; // Create navigation controller nav = [[UINavigationController alloc] initWithRootViewController:vc]; [window addSubview:[nav view]]; [window makeKeyAndVisible]; }
所要的资源文件可以源码中找到。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值