当用户从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
控制器内的导航控制器。
欢迎任何想法
答案 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];
希望这会对你有所帮助。