UIDocumentInteractionController在退出时崩溃

问题描述

| 我的主菜单上有一个常规的UIButton,当前会启动一个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文件。是的,这本身是错误的)     

解决方法

        我想知道问题是否在于您在视图创建期间执行此操作。这样,当用户关闭文档预览时,它会返回到一个不完整的UIView。因此,也许首先构建并加载视图,然后从viewDidAppear执行UIDocument吗?     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...