我正在从API下载图像并将其保存到设备上的目录中。然后我试图在它上面使用UIDocumentInteractionController,传递我刚保存的图像的本地路径。
NSURL *url = [NSURL fileURLWithPath: filePath];
UIDocumentInteractionController *interactionController = [UIDocumentInteractionController interactionControllerWithURL: url];
interactionController.delegate = self;
CGRect rect = CGRectMake(0, 0, 300, 300);
[interactionController presentOptionsMenuFromRect:rect inView:self.view animated:YES];
当我通过记录比较两个NSString时,这就是我得到的:
[url absoluteString]
file:///var/mobile/Containers/Data/Application/1121F345-0BCA-4624-8A72-F4CE0D39EAE5/Documents/complaint/1443432747ea3dc39ca0b2f6b5f17abddec1f0e9a439955.png
filePath
/var/mobile/Containers/Data/Application/1121F345-0BCA-4624-8A72-F4CE0D39EAE5/Documents/complaint/1443432747ea3dc39ca0b2f6b5f17abddec1f0e9a439955.png
正如您所知,除了file://在开头或url字符串之外,路径是不确定的。图像没有损坏,但是在从UIDocumentInteractionController中拾取的每个动作中(保存图像,将其分配给联系人等),都有一个(null)对象而不是Image。 我做错了什么?
修改
如果我使用
[interactionController presentPreviewAnimated:YES];
而不是
[interactionController presentOptionsMenuFromRect:rect inView:self.view animated:YES];
并提供委托方法documentInteractionControllerViewControllerForPreview:
图像显示和所有操作。
为什么它与预览一起使用时有效,但不是没有它?
答案 0 :(得分:2)
我在this question找到了答案。
基本上,在处理选定的操作之前,UIDocumentInteractionController
已被解除分配(ARC)。确保它被保留,我通过为它创建strong
属性来做到这一点(以下示例默认为strong
)。
@property (nonatomic) UIDocumentInteractionController *interactionController;