此代码首次触摸即可使用。预览开始显示(标题,完成,操作和空白页面),然后再次调用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对象?
答案 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;
}