本节书摘来自异步社区《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预览控制器相关推荐

  1. 《iOS 6高级开发手册(第4版)》——1.11节秘诀:获取和使用设备姿势

    本节书摘来自异步社区<iOS 6高级开发手册(第4版)>一书中的第1章,第1.11节秘诀:获取和使用设备姿势,作者 [美]Erica Sadun,更多章节内容可以访问云栖社区"异 ...

  2. 《iOS 6高级开发手册(第4版)》——导读

    本节书摘来自异步社区<iOS 6高级开发手册(第4版)>一书中的目录,作者 [美]Erica Sadun,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 第 ...

  3. 《iOS 6高级开发手册(第4版)》——1.5节秘诀:使用加速能力“向上”定位

    本节书摘来自异步社区<iOS 6高级开发手册(第4版)>一书中的第1章,第1.5节秘诀:使用加速能力"向上"定位,作者 [美]Erica Sadun,更多章节内容可以访 ...

  4. 《iOS 6高级开发手册(第4版)》——1.8节使用加速度移动屏幕上的对象

    本节书摘来自异步社区<iOS 6高级开发手册(第4版)>一书中的第1章,第1.8节使用加速度移动屏幕上的对象,作者 [美]Erica Sadun,更多章节内容可以访问云栖社区"异 ...

  5. 《iOS 6核心开发手册(第4版)》——2.1节UIControl类

    本节书摘来自异步社区<iOS 6核心开发手册(第4版)>一书中的第2章,第2.1节UIControl类,作者 [美]Erica Sadun,更多章节内容可以访问云栖社区"异步社区 ...

  6. 《iOS 6核心开发手册(第4版)》——2.11节秘诀:构建星星滑块

    本节书摘来自异步社区<iOS 6核心开发手册(第4版)>一书中的第2章,第2.11节秘诀:构建星星滑块,作者 [美]Erica Sadun,更多章节内容可以访问云栖社区"异步社区 ...

  7. 黄山归来不看岳:《Java开发手册(黄山版)》新增 11 条新规约

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料视 作者:海牙秋天 原文地址:https://www.cfanz.c ...

  8. 全新出击!《Java开发手册(嵩山版)》解读手册升级下载

    简介:<〈Java开发手册(嵩山版)〉灵魂15问>重磅来袭!"一线大厂如何用Java"解读再升级,千万阅读量博主深究Java规约背后的原理.规范学好Java还不来看一看 ...

  9. 史上最强《Java 开发手册》泰山版王者归来

    "荡胸生层云,决眦入归鸟",<Java 开发手册(泰山版)>正式和大家伙见面了!秉承着"码出高效,码出质量"的一贯愿景,泰山小哥跳着欢快的步伐向大家 ...

最新文章

  1. “大厂平均年龄 29.6 岁”:不是我们选择了年龄焦虑,是大厂焦虑了我们
  2. 企业信息化的定义、内涵
  3. springmvc【问题1】跨域
  4. 【转】Linux awk命令详解
  5. 论文阅读|How Does Batch Normalization Help Optimization
  6. javaweb:servlet
  7. Synchronize对String加锁
  8. (原创)c#学习笔记08--面向对象编程简介02--OOP技术05--运算符重载
  9. php设置超链接,怎么给一个PHP密码访问页面加超链接
  10. 介绍一款基于SpringBoot开发OA开源产品
  11. RabbitMQ小结
  12. Recursion and Tail Recursion in Java and Erlang
  13. pycharm 初级使用文档
  14. linux shell将字符串分割数组
  15. pagination分页(支持首页,末页,跳转)
  16. SpringCloud学习
  17. c语言if的作用,c语言if语句的用法
  18. Java项目前后端文件简体转换繁体
  19. 这是50年前的一本关于30年前软件开发经验的书——《人月神话》读书笔记
  20. 根据三个点的坐标计算三角形面积

热门文章

  1. 人人都能有数字替身:量子动力FACEGOOD发布AI交互实时数字人
  2. Facebook的AI视频聊天设备,终于要发售了
  3. NIPS放榜:谷歌占1/10,微软DeepMind打平,中国小哥4篇一作全球领先
  4. 特斯拉遭遇史上最大单季亏损,马斯克放言无人车3个月内横穿美国
  5. 在route-map中使用verify-availability确保路由可用性
  6. 【51NOD-0】1011 最大公约数GCD
  7. Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)
  8. python 基础干货 01
  9. 【转】【Asp.Net MVC】asp.net mvc Model验证总结及常用正则表达式
  10. 更改SQL数据库的繁体数据为简体