Iphone 实现Quick Look API时遇到的问题

Iphone 实现Quick Look API时遇到的问题,iphone,pdf,quicklook,Iphone,Pdf,Quicklook,我想实现用于预览pdf文件的QuickLook API。我制作了一个基于视图的应用程序,并在.h文件中导入QuickLook/QuickLook.h。在.m文件中,我在viewDidLoad中创建了QLPreviewController的对象。之后,我尝试创建QLViewWitem的对象,但这会导致错误“QLViewWitem未声明”。如果可以的话,请帮助我 Thanx.QLVeviewItem不是一个类,而是一个协议。您必须使用NSURL填充API(NSURL符合QLEVIEWITEM)或创建

我想实现用于预览pdf文件的QuickLook API。我制作了一个基于视图的应用程序,并在.h文件中导入QuickLook/QuickLook.h。在.m文件中,我在viewDidLoad中创建了QLPreviewController的对象。之后,我尝试创建QLViewWitem的对象,但这会导致错误“QLViewWitem未声明”。如果可以的话,请帮助我


Thanx.

QLVeviewItem不是一个类,而是一个协议。您必须使用NSURL填充API(NSURL符合QLEVIEWITEM)或创建符合该协议的自己的对象类。

QLEVIEWITEM不是一个类,而是一个协议。您必须使用NSURL来填充API(NSURL符合QLEVIEWITEM),或者创建符合该协议的您自己的对象类。

您的应用程序就快到了

QLPreviewController需要一个QLPreviewController数据源

实施

并增加两个功能:

- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller
{
    return 1; //number of documents, usually you use a array with document url's
}

- (id <QLPreviewItem>) previewController: (QLPreviewController *) controller previewItemAtIndex: (NSInteger) index
{
    return [NSURL fileURLWithPath:@"document.pdf"]; //other documents are supported too
}
-(NSInteger)PreviewWitemsInPreviewController:(QLPreviewController*)控制器的PreviewWitemsInPreviewController编号
{
返回1;//文档数,通常使用带有文档url的数组
}
-(id)previewController:(QLPreviewController*)控制器PreviewWitematindex:(NSInteger)索引
{
return[NSURL fileURLWithPath:@“document.pdf”];//还支持其他文档
}
您可以看到QLPreviewItem返回的第二个方法(正如您所看到的,它也可以与普通URL一起工作)

我希望我能进一步帮助你

你就快到了

QLPreviewController需要一个QLPreviewController数据源

实施

并增加两个功能:

- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller
{
    return 1; //number of documents, usually you use a array with document url's
}

- (id <QLPreviewItem>) previewController: (QLPreviewController *) controller previewItemAtIndex: (NSInteger) index
{
    return [NSURL fileURLWithPath:@"document.pdf"]; //other documents are supported too
}
-(NSInteger)PreviewWitemsInPreviewController:(QLPreviewController*)控制器的PreviewWitemsInPreviewController编号
{
返回1;//文档数,通常使用带有文档url的数组
}
-(id)previewController:(QLPreviewController*)控制器PreviewWitematindex:(NSInteger)索引
{
return[NSURL fileURLWithPath:@“document.pdf”];//还支持其他文档
}
您可以看到QLPreviewItem返回的第二个方法(正如您所看到的,它也可以与普通URL一起工作)


我希望我能进一步帮助您

[nsurlwithstring:@“apdfdocument.pdf”]
从路径创建
NSURL
是一种非常糟糕的方法。您应该使用
-urlWithPath:
@Julien谢谢,但您能解释一下具体原因吗?
-URLWithString:
用于从符合RFC 2396的字符串创建URL(因此需要进行所有转义等),而不是仅使用路径创建文件URL。例如,在您的示例中,您很幸运,您的文件名不包含任何有问题的字符。更一般地说,如
-URLWithString:
文档中所述:“要为文件系统路径创建NSURL对象,请改用
fileURLWithPath:isDirectory:
。:-)
[NSURLWithString:@“apdfdocument.pdf”]
是从路径创建
NSURL
的一种非常糟糕的方法。您应该使用
-urlWithPath:
@Julien谢谢,但您能解释一下具体原因吗?
-URLWithString:
用于从符合RFC 2396的字符串创建URL(因此需要进行所有转义等),而不是仅使用路径创建文件URL。例如,在您的示例中,您很幸运,您的文件名不包含任何有问题的字符。更一般地说,如
-URLWithString:
文档中所述:“要为文件系统路径创建NSURL对象,请改用
fileURLWithPath:isDirectory:
。:-)您可以添加一个示例吗,请:)您可以添加一个示例吗,请:)