QLPreviewController и NSFetchedResultsController objectAtIndexPath возвращают ноль - PullRequest
0 голосов
/ 14 декабря 2011

Этот код работает с первого прикосновения. Предварительный просмотр начинает отображаться (Заголовок, Готово, Действия и пустая страница), а затем вызывается previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)index. На этот раз [self.resultsController objectAtIndexPath:selectedIndexPath]; возвращает ноль - я думаю, что запись больше не выбрана. 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, используя только переданный индекс?

Ответы [ 2 ]

0 голосов
/ 13 июля 2012

Проблема была в numberOfPreviewItemsInPreviewController:previewController. Я возвратил [resultsController count], а не количество документов, которые я хотел просмотреть. Когда previewController пытался получить доступ к следующим нескольким объектам, он возвращал ноль.

// Returns the number of items that the preview controller should preview
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)previewController
{
    return 1;
}
0 голосов
/ 14 декабря 2011

Я не уверен, что это ответ на ваш вопрос, но вы можете использовать:

[previewController setCurrentPreviewItemIndex:0];

для установки текущего элемента, который вы хотите просмотреть.

...