Iphone UIDocumentsIntractionController显示iBooks,但不显示';不要打开它

Iphone UIDocumentsIntractionController显示iBooks,但不显示';不要打开它,iphone,objective-c,ios,cocoa-touch,uidocumentinteraction,Iphone,Objective C,Ios,Cocoa Touch,Uidocumentinteraction,我的UIDocumentsInteractionController正在工作,甚至可以显示一个带有“iBooks”按钮的操作表,但当我单击该按钮时,它就会消失,而不会带我去iBooks。这是我的密码: NSString *filenamePath =[NSString stringWithFormat:@"temp.%@", [[file path] pathExtension]]; NSString *docDir = [DataCenter getDocumentsDirector

我的UIDocumentsInteractionController正在工作,甚至可以显示一个带有“iBooks”按钮的操作表,但当我单击该按钮时,它就会消失,而不会带我去iBooks。这是我的密码:

NSString *filenamePath =[NSString stringWithFormat:@"temp.%@", [[file path] pathExtension]];

    NSString *docDir = [DataCenter getDocumentsDirectoryPath];

    NSString *fullPath = [docDir stringByAppendingPathComponent:filenamePath];

    NSURL *url = [NSURL fileURLWithPath:fullPath];
    UIDocumentInteractionController *c = [UIDocumentInteractionController interactionControllerWithURL:url];

    BOOL success = [c presentOpenInMenuFromBarButtonItem:buttonBack animated:YES];
我做错了什么?
谢谢

尝试检查
UIDocumentInteractionControllerDelegate
方法
documentInteractionController:willbegindingToApplication:
documentInteractionController:didEndSendingToApplication:
。如果您的视图控制器是文档交互控制器的委托人,则这将为您提供问题所在的线索


此外,您还应该验证您试图在其他地方使用的文件(我假定为PDF)实际上是您期望的文件。

对于那些陷入这种困境的人:您根本不需要将自己设置为UIDocumentInteractionController的委托

问题是,
[UIDocumentInteractionController interactionControllerWithURL:url]
正在自动删除。它本以为它会被展示的行动单保留在内部,但显然不是这样。
所以,是的,必须保留它,直到行动表解散。

文件存在并且是PDF(通过Xcode下载文档文件夹验证)。未调用委托方法…是否将viewcontroller添加为委托?仅仅采用这些方法是不够的。您需要执行
c.delegate=self
是的……问题是,我不知道要实现什么委托方法。你提到的只是returnvoid,所以不管我是否实现了它们(但我还是实现了)。我在文档中找到的其他请求BOOL作为返回的方法是documentInteractionController:controller:canPerformAction:和documentInteractionController:controller:performAction:我从这两个方法返回YES…这些方法被调用了吗?如果正在调用它们,则documentInteractionController工作正常。另外,你有没有仔细检查过PDF文件没有出现在iBooks中?没关系,只是发现了问题。不需要委托,问题是我不想保留UIDocumentInteractionController(我以为它会被某个内部实体保留,很可能是模式表存在,但它不存在)。谢谢你的帮助:)哇-好吧,即使使用ARC,情况也是如此!!您需要创建一个名为
self.interactionController
(或类似)的属性,并将init分配给该属性,否则它将被释放。谢谢@PragmaOnce!