UIDocumentInteractionController没有显示出来

时间:2012-06-26 11:57:30

标签: iphone objective-c ios

当用户从UIDocumentInteractionController中选择文件时,我试图从导航控制器中显示tableView

interactionControllerWithURL返回NO,从不调用委托方法documentInteractionControllerViewControllerForPreview,并且documentInteraction控制器不会出现。

当用户选择表格中的项目时,将执行以下代码:

    NSURL *fileURL;
    fileURL = (NSURL *)[[DataMng sharedMng] getFileInFolder:self.navigationItem.title atRow:indexPath.row type:type];

    if (self.docInteractionController == nil){
        self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];
        if (!self.docInteractionController) {
            NSLog(@"Selected a file with estension not supported for visualization");
            return;
        }
        self.docInteractionController.delegate = self;
    }else{
        self.docInteractionController.URL = fileURL;
    }

    if(! [self.docInteractionController presentPreviewAnimated:YES]){
        NSLog(@"ERROR in presenting preview");
    }

委托控制器(self)符合UIDocumentInteractionControllerDelegate协议,是Tabbar控制器内的导航控制器。

欢迎任何想法

3 个答案:

答案 0 :(得分:7)

我回答我自己的问题:

我启动docInteractionController的表单是正确的,问题出在文件url中,缺少正确的扩展名(在我的情况下是.pdf),而在控制器UTI中,必须是扩展形式(com.adobe。 PDF)。

正确设置后,预览显示没有问题。

答案 1 :(得分:1)

您使用这些方法来显示UIDocumentInteractionController: -

-(UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller

{
    return [[[[UIApplication sharedApplication] delegate]window]rootViewController];

}

-(void)documentInteractionControllerDidEndPreview:    (UIDocumentInteractionController *)controller 

{

    self.navigationController.navigationBarHidden = YES;

}

答案 2 :(得分:0)

if(! [self.docInteractionController presentPreviewAnimated:YES]){
        NSLog(@"ERROR in presenting preview");
    }

想想,这不是呈现文档interactionController的正确方法。尝试设置以下代码

CGRect rect = CGRectMake(0, 0, 0, 0);
[self.docInteractionController presentOpenInMenuFromRect:rect inView:self.view animated:YES];

希望这会对你有所帮助。