QLPreviewController和NSFetchedResultsController objectAtIndexPath返回nil

时间:2011-12-14 16:43:36

标签: ios qlpreviewcontroller

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

程序

- (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,但后来收到了错误:-[__NSArrayM indexAtPosition:]: unrecognized selector sent to instance 0x1cd52800

问题

如何仅使用传入的索引获取resultController对象?

2 个答案:

答案 0 :(得分:0)

我不确定这是否可以回答您的问题,但您可以使用:

[previewController setCurrentPreviewItemIndex:0];

设置您要预览的当前项目。

答案 1 :(得分:0)

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

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