1

アプリ、できれば IBAction から "Open In..." アクション シート (iPhone) / ポップオーバー (iPad) を表示する方法を知りたいです。

ファイルタイプを宣言してからビューを作成し、ユーザーが選択したアプリを開くのと似ていることを願っていますが、それよりも複雑であることはわかっています。

StackOverflow で同様の質問がされていることは承知していますが、受け入れられた回答を理解できません: iOS アプリで「open in...」機能を使用するにはどうすればよいですか? 、および Document Interaction Programming に関する Apple ドキュメントをいくつか見つけました。しかし、私はこれらを本当に理解することはできません。

4

3 に答える 3

13

UIDocumentInteractionControllerクラス メソッドを使用して を作成しますinteractionControllerWithURL:(別のアプリで開きたいファイルの URL を渡します)。

presentOpenInMenuFromRect:inView:animated:次に、またはを呼び出しますpresentOpenInMenuFromBarButtonItem:animated:。コントローラーは、そのファイルの種類で利用可能なアプリをポップオーバーに表示し、選択したアプリを開く処理を行います。

メニューがいつ閉じられ、どのアプリが選択されたかを知りたい場合は、UIDocumentInteractionControllerDelegateプロトコルを実装する必要があります。

于 2012-04-21T23:06:18.723 に答える
5

omzは彼の回答でそれを行う方法についていくつかの良い点を述べていますが、iOS 6 で新しい API が導入されたことで、この手順ははるかに簡単になりました。 :

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];

また、アプリが 6.0 より前のバージョンの iOS と互換性がある場合は、共有サービスが存在するかどうかを確認することをお勧めします。

if ([UIActivityViewController class])

シートを提示すると、残りは iOS によって自動的に処理されます。ユーザーが開いたりデータを共有したりできる各アプリまたはサービスを示すアイコンを含む美しい

iOS 6 共有シート

データの内容に応じて、iOS は共有シートに異なるサービスを表示することに注意してください。

編集: 上記の方法はファイルの内容を共有しますが、ファイル自体は共有しません。詳細については、omzの回答を参照してください。

于 2013-02-08T23:12:56.347 に答える
2

私は個人的にこれを行う必要はありませんでしたが、あなたの答えはこのAppleドキュメントで最も確実に見つけることができます: http://developer.apple.com/library/ios/#documentation/FileManagement/Conceptual/DocumentInteraction_TopicsForIOS/Articles/PreviewingandOpeningItems. html#//apple_ref/doc/uid/TP40010410-SW1 .

于 2012-04-21T23:03:19.967 に答える