2013-09-26 3 views
2

Я просмотрел другие сообщения, касающиеся 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-адресу файла или путь, но мои маленькие тесты показывают, что все коазаетично. У кого-нибудь еще была проблема с этим?

ответ

1

Для полноты, я нашел проблему. Я фактически использовал подкласс NSURL, простое дело, которое просто добавило отдельную строку для титула документа, удобочитаемого человеком (previewItemTitle). Когда я изменил ситуацию до NSURL, все стало работать. Уродливые названия для некоторых странных имен файлов, но по крайней мере они появляются. Вернуться к чертежной доске, как справиться с этой проблемой ...

1

Я согласен Под 6 индексом previewItemAtIndex является не> 0 , а с 7 индекс Всегда -1 независимо от того, счетчик Можете ли вы подтвердить?

+0

У меня возникла эта проблема, когда я неправильно вычислял количество элементов в numberOfPreviewItemsInPreviewController. –

+0

@That Guy, я проверил, что число было правильным. – rsswtmr

+0

@NewDev, нет, индекс всегда является индексом запрашиваемого документа. Он равен 0 для первого документа, 1 для второго и т. Д. – rsswtmr

Смежные вопросы