2012-10-09 5 views
10

最後に、新しいUIActivityViewControllerクラスとUIActivityItemSourceプロトコルに関するAppleの(かなり陰鬱な)ドキュメントを作成しています。アクティビティビューから呼び出された別のアクションに異なるデータセットを送信しようとしています。簡単にするために、私は2つのことを見ています。UIActivityViewController&UIActivityItemSourceでのアクションの初期テキストとpaperclipped-URL?

  1. Facebookの投稿アクション。「これをチェックしてください!」ポストにURLを付けることもできます(そのかわいい小さなクリップで)。
  2. 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つの項目の配列を返すと、何も表示されません。

答えて

15

UIActivityViewControllerのinit呼び出しの最初の引数に配列を渡して、配列内の各項目が異なるデータ型を処理して合成画面に入ることは明らかです。 selfがテキストを処理し、2番目のオブジェクト(NSURL)がURLを添付します。

NSArray *items = @[self, [NSURL URLWithString:@"http://this-is-a-url.com"]]; 
UIActivityViewController *activityView = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil]; 
[self presentViewController:activityView animated:YES completion:nil]; 

本当にもっとこれがあったと思うが、ここにある。

+3

単一のUIActivityItemSourceは、単一のデータのプレースホルダを返すことができます( 'activityViewControllerPlaceHolderItem:'のNSArraysは返されません)。詳細については、この質問を参照してください:http://stackoverflow.com/questions/13029340/uiactivityitemsource- protocole-set-complex-object – Doug

+0

他の質問へのポインタありがとうございました。「UIActivityViewController」を今は断念しています。(私は何とかしたいと思うほど時間を無駄にしています)あなたのリンクに記載されているサブクラスは正しい方向への明確なステップのように思えます。 –

+0

私はこの同じ問題に苦労しています。データ型の定数を定義していないので、 UIActivityViewControllerは素晴らしいアイデアですが、実装は少しばかり進んでいます。 – poetmountain

関連する問題