Сбой UIDocumentInteractionController при выходе
У меня есть обычная кнопка UIB в моем главном меню, которая в настоящее время запускает UIViewController; содержимое соответствующего файла.m выглядит следующим образом:
-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
documentPath = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"pdf"];
NSURL *targetURL = [NSURL fileURLWithPath:documentPath];
document = [UIDocumentInteractionController interactionControllerWithURL: targetURL];
document.delegate = self;
[document retain];
return self;
}
-(UIViewController *)documentInteractionControllerViewControllerForPreview: (UIDocumentInteractionController *) controller
{
return self;
}
-(void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller
{
[document autorelease];
}
-(void)viewDidLoad
{
[super viewDidLoad];
[document presentPreviewAnimated: YES]; // ** CRASH **
}
-(void)viewDidUnload
{
[super viewDidUnload];
}
-(void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
-(void)dealloc
{
[super dealloc];
}
Мой PDF-файл загружается, как и ожидалось, однако, когда я нажимаю кнопку "Готово", документ закрывается, и я остаюсь, глядя на свой пустой UIViewController - возможно, как и ожидалось. Но если я нажму на кнопку "назад" навигации, то приложение вылетает с ошибкой неверного доступа в моем методе viewDidLoad, где находится вызов presentPreviewAnimated.
Если бы кто-нибудь мог, пожалуйста, взглянуть, я был бы очень благодарен.
(Кстати, при создании этого контроллера представления нет файла NIB. Да, это само по себе неправильно)
1 ответ
Мне интересно, проблема в том, что вы делаете это во время создания представления. Так что, когда пользователь закрывает предварительный просмотр документа, он возвращается к не полностью сформированному UIView. Так что, возможно, сначала создать и загрузить представление, а затем сделать UIDocument из viewDidAppear?