酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

ActionSheetPicker-3.0 を Swiftで使う

UIActionSheetがiOS8でdeprecatedになりましたが、この『ActionSheetPicker-3.0』を使うと、それ代替する事ができます。さらにActionSheetPickerはUIPickerView としての機能を簡単にカスタマイズすることができます!


Cocoapodsによるライブラリのインストール

基本的にはブリッジするためのヘッダファイルさえ書けば大丈夫でした。

1
2
3
4
5
# プロジェクトフォルダの直下に移動
cd /path/to/project

# Podfileの初期化 (Podfileが存在しない場合のみ)
pod init

Podfileが作成されるので、そこに次のように設定を追記します。

1
2
3
4
5
6
7
8
platform :ios, '8.0'

target 'APP_NAME' do
  pod 'ActionSheetPicker-3.0'
end

target 'APP_NAME_TEST' do
end

あとは、Podfileに書かれたファイルをインストールします。

1
2
# Podfileをインストール
pod install

ブリッジのためのヘッダファイルの作成/追記

File => New => File...からHeader Fileを選択、 APP_NAME-Bridging-Header.hファイルを追加して、 以下を追加します。

1
#import "ActionSheetPicker.h"

プロジェクトを選択 => TARGETS => Build Settings => Objective-C Bridging Header$(SRCROOT)/$(PROJECT)/SwiftProject-Bridging-Header.hを追加

スクリーンショット_2015-03-15_20_00_20

日付 + 時間を選択するPickerの作成

「日付 + 時間を選択するUIPickerView」はこちら。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 年月日時分を登録するUIPickerViewの表示、データ登録
@IBAction func DatePickerClicked(sender: UIButton) {
  var datePicker = ActionSheetDatePicker(title: nil, datePickerMode: UIDatePickerMode.DateAndTime, selectedDate: NSDate(), doneBlock: {
    picker, value, index in
    println("value = \(value)")
    println("index = \(index)")
    println("picker = \(picker)")
    return
  }, cancelBlock: { ActionStringCancelBlock in return }, origin: sender.superview!.superview)

  let secondsInWeek: NSTimeInterval = 7 * 24 * 60 * 60;
  datePicker.minimumDate = NSDate(timeInterval: -secondsInWeek, sinceDate: NSDate())
  datePicker.maximumDate = NSDate(timeInterval: secondsInWeek, sinceDate: NSDate())
  datePicker.minuteInterval = 5

  datePicker.showActionSheetPicker()
}

作成された「日付 + 時間を選択するUIPickerView」はこちら。

スクリーンショット 2015-03-16 12.28.06

あとがき

変な話ですが、Objective-Cの時に比べてSwiftには言語を書く楽しさが詰まっているような気がします。 とにかくめっちゃ楽しいです! (単純に仕事の抑圧から解き放たれて好きなことをしているのが楽しいだけかもですがw)


おすすめの書籍