Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

by hsylife
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にも申請しました。

ぜひ使ってみてください

hsylife
iOSエンジニア。フリーランス、株式会社ジーニー 代表取締役(2009年〜)自社/受託開発。「メモ電卓(ge-calc)」が88万ダウンロード。GitHubでSwiftyPickerPopover公開中。案件ご相談お気軽に連絡ください。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away