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];
}

所要的资源文件可以 源码中找到。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值