UIActivityViewController
最後に、新しいクラスとプロトコルに関する Apple の (かなり陰気な) ドキュメントを調べUIActivityItemSource
て、アクティビティ ビューから呼び出されたさまざまなアクションにさまざまなデータ セットを送信しようとしています。物事を単純化するために、私は2つのことを見ています。
- 「これをチェックしてください!」という Facebook 投稿アクション。また、投稿に URL を添付します (かわいい小さなクリップで)。
- 「#ハッシュタグを付けてチェック!」という Twitter 投稿アクション。また、同じ 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 または画像を添付するだけです。ここでこれを行うにはどうすればよいですか?
NSString
からオブジェクトを返すのではなく、オブジェクト-activityViewController:itemForActivityType
だけを返すとNSURL
、投稿に本文がなく、そのペーパークリップが表示されることに注意してください。これら 2 つの項目の配列を返すと、何も表示されません。