博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《iOS 6高级开发手册(第4版)》——2.5节秘诀:Quick Look预览控制器
阅读量:7123 次
发布时间:2019-06-28

本文共 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所示。

e4d569a524bb007ab4d8041ca2951ccf1252c67d

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/

你可能感兴趣的文章
SpringMVC + Apache POI 实现WEB中Excel下载功能
查看>>
智能锁市场释放洪荒之力 但火热背后仍存隐忧
查看>>
Windows 8上强制Visual Studio以管理员身份运行
查看>>
Linux_Bash常用脚本
查看>>
Python Module_subprocess_调用 Powershell
查看>>
HTML5中 HTML表单和PHP环境搭建及与PHP交互 韩俊强的博客
查看>>
安全老炮儿看局势——赛门铁克发布第21期《互联网安全威胁报告》
查看>>
Fortinet 携手中信国际电讯CPC在亚太地区扩展安全托管服务
查看>>
OpenStack发布最新版本Ocata 为开源云带来更高稳定性
查看>>
澳大利亚财政部CIO:云计算不是一种商品
查看>>
《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一1.9 收集到映射表中
查看>>
Cloudian更新企业IT存储 目标高密度系统
查看>>
Colin Dixon:OpenDaylight能做到的有更多
查看>>
R语言如何增强数据科学?
查看>>
检测不出的 PLC rootkit 终于现世
查看>>
Hadoop技术让大数据处理变得简单
查看>>
10 个最基本的JS面试问题及答案
查看>>
双十一,一群金融大脑去了趟苏州!
查看>>
论证:为什么大数据是下一个浪潮?
查看>>
《逻辑与计算机设计基础(原书第5版)》——3.12 其他的算术功能模块
查看>>