《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所示。


《iOS 6高级开发手册(第4版)》——2.5节秘诀:Quick Look预览控制器

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.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
上一篇:Windows下Java环境变量配置


下一篇:ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单编程