Использование QLPreviewController для отображения файлов из папки «Документы» - PullRequest
5 голосов
/ 11 октября 2011

Я очень ценю учебник по использованию QLPreviewController здесь.

Я пытаюсь внедрить этот код в свое приложение с модификацией для отображения файлов из папки «Документы» приложения вместо папки «Ресурсы» (чтобы пользователь мог использовать общий доступ к файлам iTunes для управления документами). Тем не менее, при этом я нажал "EXC_BAD_ACCESS" ошибка.

Я создаю массив файлов в папке «Документы» для создания списка табличных представлений:

- (void)viewDidAppear:(BOOL)animated {

[super viewDidAppear:animated];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsPath = [paths objectAtIndex:0];

arrayOfDocuments = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsPath error:NULL];
}

У меня нет проблем с отображением списка файлов из папки «Документы» таким образом.

Код для отображения выбранного файла из списка с помощью QuickLook:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{  
// When user taps a row, create the preview controller
QLPreviewController *previewer = [[[QLPreviewController alloc] init] autorelease];

// Set data source
[previewer setDataSource:self];

    // Which item to preview
[previewer setCurrentPreviewItemIndex:indexPath.row];

// Push new viewcontroller, previewing the document
[[self navigationController] pushViewController:previewer animated:YES];
}


- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller 
{
return [arrayOfDocuments count];
}


- (id <QLPreviewItem>)previewController: (QLPreviewController *)controller previewItemAtIndex:(NSInteger)index 
{
// Break the path into it's components (filename and extension)
NSArray *fileComponents = [[arrayOfDocuments objectAtIndex: index] componentsSeparatedByString:@"."];

// Use the filename (index 0) and the extension (index 1) to get path
NSString *path = [[NSBundle mainBundle] pathForResource:[fileComponents objectAtIndex:0] ofType:[fileComponents objectAtIndex:1] inDirectory: @"Documents"];

return [NSURL fileURLWithPath:path];
}

При запуске этого кода я получаю ошибку EXC_BAD_ACCESS в строке:

[previewer setDataSource:self];

Любая помощь будет высоко ценится. Заранее спасибо.

...