Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 496 - Swiftではじめる教科書:SNSへの投稿 その2

前回は、この本で知った「SLComposeViewController」の完成度の高さを知りました。こんな部品が用意されていると開発が楽ですね。できるだけ標準で用意されている道具を使って必要な機能だけを自分で実装することを考える必要があります。

次は「共有アクションシート」の利用です。

前回と同じプロジェクトを使います。もう一つUIButtonを設置します。前回のボタンの上部に設置してコンストレイントも忘れないで決めます。タイトルをダブルクリックして「メッセージを共有」に変更します。

「Ctr + ドラッグ」でViewController.swiftに@IBActionメソッド「shareMessage」を作ります。

投稿ダイアログで必要が無かったのが共有したいアイテムを事前に用意することです。普通こういうアイテムをボタンアクション内に埋め込むことはありません。デモなのでアイテムをメソッド内に用意します。アイテムはArray型で用意するのがルールです。

let shareItems = ["シェアしたいコメント"]

ここでString型の1つのアイテムを用意しました。次に共有アクションシートをインスタンス化させてい来ます。これはUIKitフレームワークに用意されている「UIActivityViewController」で作ります。

let shareActionSheet = 
    UIActivityViewController(activityItems: shareItems, 
                               applicationActivities: nil)

そしてViewControllerに切りかえを要求します。

self.presentViewController(shareActionSheet, 
               animated: true, completion: nil)

これをランさせて、「メッセージを共有」ボタンを押すと次のアクションシートが出てきます。

f:id:yataiblue:20151117091521j:plain

多くの項目が並んでいます。この項目を消すためにアクションシートのプロパティ「excludedActivityTypes」に例外項目のアレー型を指示してやると表示から消えます。

@IBAction func messageShare(sender: AnyObject) {
 let shareItems = ["シェアしたいコメント"]
 let nonVisible = [UIActivityTypeAirDrop]
 let shareActionSheet = 
       UIActivityViewController(activityItems: shareItems,  
                            applicationActivities: nil)
 shareActionSheet.excludedActivityTypes = nonVisible
 self.presentViewController(shareActionSheet, 
                 animated: true, completion: nil)
}

これでAirDropの項目が消えます。

f:id:yataiblue:20151117091955j:plain

今日はここまで。