Сбой UIDocumentInteractionController при выходе - PullRequest
6 голосов
/ 27 мая 2011

У меня есть обычная кнопка 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 Ответ

1 голос
/ 27 мая 2011

Мне интересно, проблема в том, что вы делаете это во время создания представления. Так что, когда пользователь закрывает предварительный просмотр документа, он возвращается к не полностью сформированному UIView. Так что, возможно, сначала создать и загрузить представление, а затем сделать UIDocument из viewDidAppear?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...