35
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PickerをPopoverで表示するライブラリの紹介

Last updated at Posted at 2016-10-06
1 / 12

##自己紹介

この資料は、2016年10月6日に株式会社Fabricで開催されたshibuya.swiftでLTとして発表したものです。


##SwiftyPickerPopoverの動作イメージ
SwiftyPickerPopover_movie.gif

SwiftyPickerPopover_screenshot.jpg


##SwiftyPickerPopoverとは


##用途

  • 遷移させずに、何らかの日時やカウントダウン時間を得たい場合
  • 同じく、文字列の選択肢をピッカーから選ばせたい場合
  • iOS9でDeprecatedになったUIPopoverControllerを使っているライブラリの置き換えとしてサクッと使う
  • UXにおいては、アクションシートスタイルのピッカーよりも指の移動量が減るので有利。
  • 開発においては、iPadとiPhoneのUIを同じに保てる。デザインや実装の作業分岐が不要になる。

##開発背景

  • iOS9でDeprecatedになったUIPopoverControllerを使っているライブラリの置き換えとして開発した。
  • ActionSheetPickerは大変優れたObjective-CベースのライブラリですがUIPopoverControllerを前提にしている。

##特徴

  • Swift 3(Swift 2.3のブランチもあります。詳しくはREADME.mdをご覧ください), Xcode 8, iOS9+に対応。iPhone, iPadいずれも対応。
  • MITライセンス。
  • 1行で記述できる。
  • CocoaPodsやCarthageで簡単にインストールできる。
  • 文字列を1カラムで選択させるピッカー、複数列で選択させるピッカー(※)、日時を選択するピッカー、カウントダウン時間のピッカーを用意(※)。

※ Ken Torimaruさんのコントリビーションによります。オープンソース文化は本当に素晴らしいですね。


##コードサンプル
文字列の選択をさせるピッカーStringPickerPopoverを表示させるコード。(下のスクリーンショットの一番左)

SwiftyPickerPopover_screenshot.jpg

let displayStringFor:((String?)->String?)? = { string in
   if let s = string {
      switch(s){
      case "value 1":
        return "😊"
      case "value 2":
         return "😏"
      case "value 3":
         return "😓"
      default:
         return s
      }
    }
  return nil
  }

  StringPickerPopover.appearFrom(
   originView: button,
   baseViewController: self,
   title: "StringPicker",
   choices: ["value 1","value 2","value 3"],
   displayStringFor: displayStringFor,
   initialRow:0,
   doneAction: { selectedRow, selectedString in print("done row \(selectedRow) \(selectedString)")} ,
   cancelAction: { print("cancel")}
  )

originView: Pickerの入ったPopoverの起点となるView
baseViewController: 出現元となるViewController
title: Popoverのタイトル
choices: 選択肢の文字列の配列
displayStringFor: 内部的な選択肢と表示するための選択肢の置き換えを記述するクロージャー。省略可能。
initialRow: 初期選択ロー
doneAction: Doneボタンを押下した時に呼ばれるコールバック。選択されたRowと文字列を利用できる。
cancelAction: Cancelボタンを押された時やポップオーバーが閉じられた時の挙動。


##CocoaPodsへの自作ライブラリの登録手続き


##Carthage対応
Swift3製ライブラリをCarthage対応したときの手順
http://qiita.com/hsylife/items/19386c9b7c4132da1189


##ライブラリ公開の告知先

  • せっかく作ったので、使う可能性のある人には広く告知したい。
  • 英語でREADME.mdを書いた。ContributorやUserの層が広がる。
  • CocoaPodsに登録すると公式サイトにREADME.mdの内容が紹介され、関連するサイトからツイートされる。
  • まず身内にFacebookなどで紹介して反応をいただきました。
  • facebookのグループ iOS Developers JAPANに投稿した。日本語。
  • Swift iOS Developmentに投稿した。英語。
  • Qiitaでライブラリを紹介した。日本語。
  • UI系ライブラリなので、CocoaControliOS Cookiesにも申請しました。

##ぜひ使ってみてください

35
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?