Я просмотрел другие сообщения, касающиеся QLPreviewController
, не работающие при определенных условиях. У меня один из них:QLPreviewController работает на iOS 6; not on iOS 7
RHBlobCollection
и RHBlobView
- это объекты модели/вида, которые, соответственно, хранят коллекцию и отдельные отображаемые файлы, зашифрованные раньше времени.
RHBlobView.m:
- (IBAction) handleBlobTap:(UITapGestureRecognizer *)sender
{
QLPreviewController *previewController = [[QLPreviewController alloc] init];
// view tag is index in array of blobs
[previewController setCurrentPreviewItemIndex:self.tag];
// blobContainer is type RHBlobCollection
[previewController setDataSource:self.blobContainer];
UINavigationController *navController = (UINavigationController *)[[[[UIApplication sharedApplication] delegate] window] rootViewController];
[navController pushViewController:previewController animated:YES];
}
RHBlobCollection.m:
- (NSInteger) numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller
{
return [self.blobs count];
}
- (id <QLPreviewItem>) previewController:(QLPreviewController *)controller
previewItemAtIndex:(NSInteger)index
{
RHBlobView *blob = self.blobs[(NSUInteger) index];
NSURL *fileURL = [RHCacheManager cachedFileURLForFilename:blob.filename withKey:blob.blobID];
// URL proper?
BOOL __unused proof1 = [fileURL isFileURL];
// QLPreviewController can stomach it?
BOOL __unused proof2 = [QLPreviewController canPreviewItem:fileURL];
// Cached file actually exists?
NSString *proof3path = [[fileURL resourceSpecifier] stringByReplacingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding];
BOOL __unused proof3 = [[NSFileManager defaultManager] fileExistsAtPath:proof3path];
// Unless we're dealing with thumbnails, we're done. Return the URL of the resource.
if (! [blob hasThumbnails])
{
return fileURL;
}
// Process thumbnails into .pdf file for display...
proof1
, proof2
и proof3
возвращают YES
. Вытянутый в отдельный проект доказательной концепции, QLPreviewController
делает, как и предполагалось. В моем полном приложении проект, однако, он работает под iOS 6, но висит на «Загрузка ...» с помощью счетчика в iOS 7.
Моя кишка говорит мне, что это должно иметь какое-то отношение к неверному URL-адресу файла или путь, но мои маленькие тесты показывают, что все коазаетично. У кого-нибудь еще была проблема с этим?
У меня возникла эта проблема, когда я неправильно вычислял количество элементов в numberOfPreviewItemsInPreviewController. –
@That Guy, я проверил, что число было правильным. – rsswtmr
@NewDev, нет, индекс всегда является индексом запрашиваемого документа. Он равен 0 для первого документа, 1 для второго и т. Д. – rsswtmr