本文共 2605 字,大约阅读时间需要 8 分钟。
本节书摘来自异步社区《iOS 6高级开发手册(第4版)》一书中的第2章,第2.5节秘诀:Quick Look预览控制器,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.5 秘诀:Quick Look预览控制器
iOS 6高级开发手册(第4版)Quick Look预览控制器类允许用户预览许多文档类型。这个控制器支持文本、图像、PDF、RTF、iWork文件、Microsoft Office文档(Office 97及更高版本,包括doc、ppt、xls等)和逗号分隔的值(comma-separated value,csv)文件。你提供一种受支持的文件类型,Quick Look控制器将为用户显示它。集成的系统提供的活动视图控制器有助于共享预览的文档,如图2-6所示。Quick Look控制器以模态方式展示,并且显示用户点按了动作按钮之后的屏幕。Quick Look控制器可以处理广泛的文档类型,使用户能够先查看文件内容,然后再决定要应用于它们的动作。大多数Quick Look类型都支持Mail(邮件)和Print(打印),其中许多类型支持Copy(复制),图像文件甚至提供了更多的选项
可以推送或展示预览控制器。控制器能够适应这两种情形,与导航栈和模态表示协同工作。秘诀2-5演示了两种方法。
2.5.1 实现Quick Look
Quick Look支持需要几个简单的步骤。(1) 在主控制器类中声明QLPreviewControllerDataSource协议。
(2) 实现numberOfPreviewItemsInPreviewController:和previewController:previewItemAtIndex:数据源方法。其中第一个方法返回要预览的项目计数;第二个方法则返回索引所引用的预览项目。
(3) 预览项目必须遵守QLPreviewItem协议,该协议包含两个必需的属性:预览标题和项目URL。秘诀2-5创建了一个符合要求的QuickItem类,该类实现了一个绝对最低限度的方法,用于支持数据源。
在满足了所有这些要求之后,代码将准备好创建一个新的预览控制器,设置它的数据源,然后展示或推送它。
秘诀2-5 Quick Look
@interface QuickItem : NSObject@property (nonatomic, strong) NSString *path;@property (readonly) NSString *previewItemTitle;@property (readonly) NSURL *previewItemURL;@end@implementation QuickItem// Title for preview item- (NSString *) previewItemTitle{ return [_path lastPathComponent];}// URL for preview item- (NSURL *) previewItemURL{ return [NSURL fileURLWithPath:_path];}@end#define FILE_PATH [NSHomeDirectory() \ stringByAppendingPathComponent:@"Documents/PDFSample.pdf"]@interface TestBedViewController : UIViewController @end@implementation TestBedViewController- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller{ return 1;}- (id ) previewController: (QLPreviewController *) controllerpreviewItemAtIndex: (NSInteger) index;{ QuickItem *item = [[QuickItem alloc] init]; item.path = FILE_PATH; return item;}// Push onto navigation stack- (void) push{ QLPreviewController *controller = [[QLPreviewController alloc] init]; controller.dataSource = self; [self.navigationController pushViewController:controller animated:YES];}// Use modal presentation- (void) present{ QLPreviewController *controller = [[QLPreviewController alloc] init]; controller.dataSource = self; [self presentViewController:controller animated:YES completion:nil];}- (void) loadView{ self.view.backgroundColor = [UIColor whiteColor]; self.navigationItem.rightBarButtonItem = BARBUTTON(@"Push", @selector(push)); self.navigationItem.leftBarButtonItem = BARBUTTON(@"Present", @selector(present));}@end
转载地址:http://hpoel.baihongyu.com/