Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > App Extensions #3

App Extensions #3(Share)

前回の記事より、 iOS8からの新機能のAppExtensionのShareを利用したサンプルを引き続き記載していきます。 途中からの人は上記のリンクより前記事をご確認ください。

sharedサンプル3

AppExtensionのShareでdidSelectPostの箇所のソース、上記のエラーが解決できない箇所まで進んでいました。


参考:iOS 8 Share extension loadItemForTypeIdentifier:options:completionHandler: completion closure not executing
参考:[NSObject : AnyObject]?' does not have a member named 'subscript' error in Xcode 6 beta 6

URLを取得できた、修正したソース

以下のように修正すると取得することが可能できました。どうやら最後の行のcompleteRequestReturningItemsの位置をClosureに含めないと取得できないようでした。Objective-Cでは取得できていたようですので注意が必要です。


    override func didSelectPost() {
        var item : NSExtensionItem = self.extensionContext!.inputItems[0] as NSExtensionItem
        
        var attachments = item.attachments!;
        var itemProvider : NSItemProvider = attachments[0] as NSItemProvider
        
        if (itemProvider.hasItemConformingToTypeIdentifier("public.url")) {
            itemProvider.loadItemForTypeIdentifier("public.url", options: nil, completionHandler: { (urlItem, error) in
                
                let url : NSURL = urlItem as NSURL;
                println(url.absoluteString);//http://www.apple.com/retail/code/
                
                self.extensionContext!.completeRequestReturningItems([], completionHandler: nil)

            })
        }
    }

おまけ:次のgithubのソースではスウェーデンのvandadnpさんがカスタマイズされて独自のネットワーク先を選択してPOSTできるような形のサンプルが掲載されています。iOS-8-Swift-Programming-Cookbook/chapter-extensions/Providing a Custom Sharing Extension to iOS/ShareExtension/ShareViewController.swift

引き続き、最後のconfigurationItemsを解説していきます

configurationItems解説

こちらは何かといえば、例えばFacebookのShareの位置情報や共有範囲のメニューの事です。デフォルトでは何もついていません。こちらをカスタマイズすることができます

sharedサンプル1

Githubにvandadnpさんがサンプル一式をアップされていましたので実行してみました。

参考:iOS-8-Swift-Programming-Cookbook/chapter-extensions/Providing a Custom Sharing Extension to iOS/ShareExtension/


  override func configurationItems() -> [AnyObject]! {
    return [audienceConfigurationItem]
  }
  lazy var audienceConfigurationItem: SLComposeSheetConfigurationItem = {
    let item = SLComposeSheetConfigurationItem()
    item.title = "Audience"
    item.value = AudienceSelectionViewController.defaultAudience()
    item.tapHandler = self.showAudienceSelection
    return item
   }()

上記ソースのコピペだけでは動作しません。AudienceSelectionViewController.swiftも必要ですので注意です。

.....

AudienceSelectionViewController.swfitを追加して、ShareViewControllerを修正すると、以下のようになりました。

sharedサンプル2

sharedサンプル3

あとはvandadnpさんのサンプルコードからカスタマイズしていただければ感謝です。

続きをApp Extension #4に追加しました。次は[Today]を説明しています。よかったらご確認下さい(2014/12/12)

↓こんな記事もありますよ!

CoreTextでTextViewの一文字の向きを変える(解決前)

TextViewの文字を縦書きにしたいなぁと考えている時にCoreTextとNSMutableAttributedStringの二つのどちらかなら実装できそう。CoreTextを利用してトライして無理ならAttributedStringをトライしてみます。

UITabBarItem

タブバーを利用した時にアイコンがデフォルトのものだけでは物足りなかったのでフリー素材でよさそうなサイトがあったので共有です。 500個も魅力的でオーソドックスで使いやすいアイコン盛りたくさん。

AppleWatchのアプリ登録が開始されました、開発部分を少し翻訳

ItunesconnectにもAppleWatchのアイコン やスクリーンショットが登録できる画面が追加されています。あと24日、登録予定している人は審査を考えても後10日程度ではないでしょうか。 スタートダッシュに追いつくには今が頑張りどころなのかもしれません!
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!