最後に、新しいUIActivityViewController
クラスとUIActivityItemSource
プロトコルに関するAppleの(かなり陰鬱な)ドキュメントを作成しています。アクティビティビューから呼び出された別のアクションに異なるデータセットを送信しようとしています。簡単にするために、私は2つのことを見ています。UIActivityViewController&UIActivityItemSourceでのアクションの初期テキストとpaperclipped-URL?
- Facebookの投稿アクション。「これをチェックしてください!」ポストにURLを付けることもできます(そのかわいい小さなクリップで)。
- Twitterの投稿アクション。「チェックアウトするには、#hashtag!同じURLを添付してください(同じクリップで)。
これは私が今実装しているコードです。
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {
if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
return @"Check this out!";
} else if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
return @"Check this out, with #hashtag!";
}
return @"";
}
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
return @"";
}
このアクティビティビューコントローラをセットアップすると(これは同じクラスにあります)、これが私の行います。
UIActivityViewController *activityView = [[UIActivityViewController alloc] initWithActivityItems:@[self] applicationActivities:nil];
[self presentViewController:activityView animated:YES completion:nil];
私のジレンマは、そのNSURL
オブジェクトをアタッチする方法をです。 iOS 6 SLクラスのポスティングモーダルを呼び出すのは比較的簡単です。個々のメソッドを呼び出して、URLまたはイメージを添付します。ここで私はどうやってこれをやりますか?
私はちょうどNSURL
オブジェクトを返す場合代わりに-activityViewController:itemForActivityType
からNSString
オブジェクトを返すので、彼らはポストで無本文と、そのクリップに現れていることに注意しましょう。これら2つの項目の配列を返すと、何も表示されません。
単一のUIActivityItemSourceは、単一のデータのプレースホルダを返すことができます( 'activityViewControllerPlaceHolderItem:'のNSArraysは返されません)。詳細については、この質問を参照してください:http://stackoverflow.com/questions/13029340/uiactivityitemsource- protocole-set-complex-object – Doug
他の質問へのポインタありがとうございました。「UIActivityViewController」を今は断念しています。(私は何とかしたいと思うほど時間を無駄にしています)あなたのリンクに記載されているサブクラスは正しい方向への明確なステップのように思えます。 –
私はこの同じ問題に苦労しています。データ型の定数を定義していないので、 UIActivityViewControllerは素晴らしいアイデアですが、実装は少しばかり進んでいます。 – poetmountain