2011-12-14 75 views
0

此代码在第一次触摸时起作用。预览开始显示(标题,完成,操作和空白页),然后再次调用previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)index。这一次[self.resultsController objectAtIndexPath:selectedIndexPath];返回零 - 我的猜测是不再选择条目。 index是正确的,在1QLPreviewController和NSFetchedResultsController objectAtIndexPath返回零

过程

- (id)previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)index 
{ 
    NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow]; 
    Manuals *manuals = [self.resultsController objectAtIndexPath:selectedIndexPath]; 
    NSURL *vUrl = [self locateUrl:[NSURL URLWithString:manuals.Url] ofType:[manuals.Url pathExtension]];  
    return vUrl; 
} 

如果我忽略了的异常 - 预览继续显示该文档。

我也尽量保持良好的最后返回selectedIndexPath,但随后收到错误:用我的resultsController对象只有在指数传递

我如何获得:-[__NSArrayM indexAtPosition:]: unrecognized selector sent to instance 0x1cd52800

问题

回答

0

问题出在numberOfPreviewItemsInPreviewController:previewController。我返回[resultsController count],而不是我想要预览的文件数量。当previewController试图访问接下来的几个对象时,它返回nil。

// Returns the number of items that the preview controller should preview 
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)previewController 
{ 
    return 1; 
} 
0

我不知道这是否回答你的问题,但你可以使用:

[previewController setCurrentPreviewItemIndex:0]; 

设置要预览当前项目。

+0

我没有在我的代码中调用[previewController。它被委托。我只是试图返回正确的文件://URL QLPreviewController正在请求。 – Kent 2011-12-14 17:37:15