《iOS 6高级开发手册(第4版)》——2.5节秘诀:Quick Look预览控制器
本节书摘来自异步社区《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 <QLPreviewItem>
@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
<QLPreviewControllerDataSource>
@end@implementation TestBedViewController
- (NSInteger) numberOfPreviewItemsInPreviewController:(QLPreviewController *) controller
{return 1;
}
- (id <QLPreviewItem>) previewController:(QLPreviewController *) controller
previewItemAtIndex: (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.navigationControllerpushViewController:controller animated:YES];
}// Use modal presentation
- (void) present
{QLPreviewController *controller =[[QLPreviewController alloc] init];controller.dataSource = self;[self presentViewController:controlleranimated: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
《iOS 6高级开发手册(第4版)》——2.5节秘诀:Quick Look预览控制器相关推荐
- 《iOS 6高级开发手册(第4版)》——1.11节秘诀:获取和使用设备姿势
本节书摘来自异步社区<iOS 6高级开发手册(第4版)>一书中的第1章,第1.11节秘诀:获取和使用设备姿势,作者 [美]Erica Sadun,更多章节内容可以访问云栖社区"异 ...
- 《iOS 6高级开发手册(第4版)》——导读
本节书摘来自异步社区<iOS 6高级开发手册(第4版)>一书中的目录,作者 [美]Erica Sadun,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 第 ...
- 《iOS 6高级开发手册(第4版)》——1.5节秘诀:使用加速能力“向上”定位
本节书摘来自异步社区<iOS 6高级开发手册(第4版)>一书中的第1章,第1.5节秘诀:使用加速能力"向上"定位,作者 [美]Erica Sadun,更多章节内容可以访 ...
- 《iOS 6高级开发手册(第4版)》——1.8节使用加速度移动屏幕上的对象
本节书摘来自异步社区<iOS 6高级开发手册(第4版)>一书中的第1章,第1.8节使用加速度移动屏幕上的对象,作者 [美]Erica Sadun,更多章节内容可以访问云栖社区"异 ...
- 《iOS 6核心开发手册(第4版)》——2.1节UIControl类
本节书摘来自异步社区<iOS 6核心开发手册(第4版)>一书中的第2章,第2.1节UIControl类,作者 [美]Erica Sadun,更多章节内容可以访问云栖社区"异步社区 ...
- 《iOS 6核心开发手册(第4版)》——2.11节秘诀:构建星星滑块
本节书摘来自异步社区<iOS 6核心开发手册(第4版)>一书中的第2章,第2.11节秘诀:构建星星滑块,作者 [美]Erica Sadun,更多章节内容可以访问云栖社区"异步社区 ...
- 黄山归来不看岳:《Java开发手册(黄山版)》新增 11 条新规约
点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料视 作者:海牙秋天 原文地址:https://www.cfanz.c ...
- 全新出击!《Java开发手册(嵩山版)》解读手册升级下载
简介:<〈Java开发手册(嵩山版)〉灵魂15问>重磅来袭!"一线大厂如何用Java"解读再升级,千万阅读量博主深究Java规约背后的原理.规范学好Java还不来看一看 ...
- 史上最强《Java 开发手册》泰山版王者归来
"荡胸生层云,决眦入归鸟",<Java 开发手册(泰山版)>正式和大家伙见面了!秉承着"码出高效,码出质量"的一贯愿景,泰山小哥跳着欢快的步伐向大家 ...
最新文章
- “大厂平均年龄 29.6 岁”:不是我们选择了年龄焦虑,是大厂焦虑了我们
- 企业信息化的定义、内涵
- springmvc【问题1】跨域
- 【转】Linux awk命令详解
- 论文阅读|How Does Batch Normalization Help Optimization
- javaweb:servlet
- Synchronize对String加锁
- (原创)c#学习笔记08--面向对象编程简介02--OOP技术05--运算符重载
- php设置超链接,怎么给一个PHP密码访问页面加超链接
- 介绍一款基于SpringBoot开发OA开源产品
- RabbitMQ小结
- Recursion and Tail Recursion in Java and Erlang
- pycharm 初级使用文档
- linux shell将字符串分割数组
- pagination分页(支持首页,末页,跳转)
- SpringCloud学习
- c语言if的作用,c语言if语句的用法
- Java项目前后端文件简体转换繁体
- 这是50年前的一本关于30年前软件开发经验的书——《人月神话》读书笔记
- 根据三个点的坐标计算三角形面积
热门文章
- 人人都能有数字替身:量子动力FACEGOOD发布AI交互实时数字人
- Facebook的AI视频聊天设备,终于要发售了
- NIPS放榜:谷歌占1/10,微软DeepMind打平,中国小哥4篇一作全球领先
- 特斯拉遭遇史上最大单季亏损,马斯克放言无人车3个月内横穿美国
- 在route-map中使用verify-availability确保路由可用性
- 【51NOD-0】1011 最大公约数GCD
- Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)
- python 基础干货 01
- 【转】【Asp.Net MVC】asp.net mvc Model验证总结及常用正则表达式
- 更改SQL数据库的繁体数据为简体