2013-03-27 2 views
1

У меня есть тестовый PDF-файл, который я хочу открыть в iBooks через мое приложение. Я сохранил его в своем временном каталоге, и я использую этот код, чтобы загрузить его в интерактивные книги:UIDocumentInteractionController открытие pdf в iBooks сбоях

NSURL *targetURL = [NSURL fileURLWithPath:tempFullPath]; 
NSLog(@"Path is %@", tempFullPath); 
UIDocumentInteractionController *controller = [UIDocumentInteractionController interactionControllerWithURL:targetURL]; 
controller.delegate = self; 
controller.UTI = @"com.adobe.pdf"; 

[controller presentOpenInMenuFromRect:self.view.bounds inView:self.view animated:YES]; 

меню появляется только штрафом, но когда я нажимаю кнопку интерактивных книг сбоев приложения и вешаю мою Xcode.

Путь к файлу я получаю в моем выходе NSLog как это:

Path is /private/var/mobile/Applications/65EC4182-A79B-431C-9E74-BD72D91A31AB/tmp/TestFile.pdf 

Что я делаю неправильно? Заранее спасибо!

+1

Какая ошибка отображается в консоли? Что такое трассировка стека? Где ваше приложение падает? – rmaddy

+0

Приложение @rmaddy падает после того, как я ударил значок iBooks в 'UIDocumentInteractionController'pop, и я получаю сообщение' Thread 1: EXC_BAD_ACCESS (code = 1, address = blah blah) 'в Xcode. –

+1

Включите зомби и посмотрите, отправлено ли сообщение на освобожденный объект. Скорее всего, проблема в том, что вы не держите ссылку на 'UIDocumentInteractionController', поэтому ее освобождают слишком рано. – rmaddy

ответ

6

Использование UIDocumentInteractionController требует, чтобы вы сохраняли ссылку до тех пор, пока она не будет завершена. Это означает, что вы должны использовать переменную экземпляра, а не локальную переменную. Внедрите правильные методы делегатов, чтобы вы могли сбросить ivar, когда закончите с контроллером.

Включение зомби поможет отладить такую ​​проблему. Скорее всего, вы увидите, что сообщение отправляется на освобожденный объект (ваш контроллер).

+0

Спасибо! –

+0

Точно, используйте этот контроллер как UIPopoverController, он должен сохранить его до завершения! – VietHung

+0

@rmaddy Как я могу использовать? не могли бы вы предложить мне – Vvk

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