2012-04-21 113 views
1

我想知道如何从我的应用程序中呈现“Open In ...”操作表(iPhone)/ Popover(iPad),最好一个IBAction如何将iOS“Open In ...”功能添加到应用程序

我希望它会类似于声明一个文件类型,然后创建视图和打开用户选择的应用程序,但我知道这是更复杂的,然后。

我意识到在StackOverflow上有类似的问题,但我无法理解被接受的答案:How to use "open in..." feature to iOS app?,并且我找到了一些有关文档交互编程的Apple文档。但是,我无法真正理解这些。

回答

13

使用interactionControllerWithURL:类方法(传递要在其他应用中打开的文件的URL)创建UIDocumentInteractionController。请致电presentOpenInMenuFromRect:inView:animated:presentOpenInMenuFromBarButtonItem:animated:。控制器负责为该文件类型提供可用应用程序的弹出窗口并打开所选应用程序。

如果您想知道菜单何时被取消以及选择了哪个应用程序,则需要实施UIDocumentInteractionControllerDelegate协议。

5

omz就如何做,在他的回答一些好点,但这个过程是通过引入新的API中的iOS 6,这是一个简单而有效的方式来显示UIActionSheet开在 - 更容易菜单中的iOS 6或以上:

NSArray *dataToShare = @[contentData]; //Or whatever data you want to share - does not need to be an NSArray 
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:dataToShare applicationActivities:nil]; 
[self presentViewController:activityViewController animated:YES completion:nil]; 

另外,如果你的应用与iOS版本低于6.0兼容,你可能要检查共享服务存在:

if ([UIActivityViewController class]) 

一旦你PR如果没有该表格,iOS会自动为您处理剩下的问题。它会显示一个美丽的带图标显示的每个应用程序或服务的用户可以打开/共享您的数据:

iOS 6 Share Sheet

注意的是,根据数据的内容,iOS设备将在共享显示不同的服务工作表

编辑:上述方法共享文件内容,但不是文件本身。参考omz的答案更多的。

相关问题