0

このコードは最初のタッチで機能します。プレビューの表示が開始され(タイトル、完了、アクション、および空白のページ)、その後previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)index再び呼び出されます。今回[self.resultsController objectAtIndexPath:selectedIndexPath];はnilを返します-私の推測では、エントリはもう選択されていません。index1で正しいです。

手順

- (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 に答える