0

此代码在第一次接触时有效。预览开始显示(标题、完成、操作和空白页),然后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

问题

如何仅使用传入的索引来获取我的 resultsController 对象?

4

2 回答 2

0

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

[previewController setCurrentPreviewItemIndex:0];

设置要预览的当前项目。

于 2011-12-14T16:48:33.917 回答
0

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

// Returns the number of items that the preview controller should preview
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)previewController
{
    return 1;
}
于 2012-07-13T15:50:13.367 回答