Сбой 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?

Другие вопросы по тегам