【Swift】Stepperの使い方。プラスとマイナスのボタンで値を増減させる。(Swift 2.1、XCode 7.2)

2020年6月16日

前回の記事に続いて、Swiftで使える部品の確認を行う。今回の部品はStepper(以下、ステッパー)。
ステッパー

 

ステッパーとは、プラスボタン(+)とマイナスボタン(-)で値の増減を管理するボタンである。増減させた値はステッパーのインスタンス自身が保持しているので、値を管理するための変数を用意しなくてもいいのが嬉しい。

テレビの音が聞こえないときはリモコンのプラスボタン、音がうるさすぎるときはマイナスボタン。そんなイメージのボタンだ。
テレビのリモコン

 

まずはいつもの流れでラベルとステッパーをデバイス画面に配置し、ソースコードとコネクションを確立する。ラベルは「Connection ⇒ Outlet」、ステッパーは「Connection ⇒ Action」、「Event ⇒ Value Changed」で接続する。

部品配置からコネクション確立の流れは過去の記事で説明しているので、詳しくはそちらを参照されたし。⇒「記事

デバイス画面にラベルとステッパーを配置

ステッパーの設定を変更する

ステッパーの初期状態の値は0から100までで、ボタン1回で1増減する設定になっている。設定画面から初期値や増減幅、ボタン押下時の振る舞いを変更できるのでやってみよう。

デバイス画面にあるステッパーをクリックしたあとに、画面右上のアトリビュートインスペクタボタン(下図赤枠)をクリックする。すると、下にステッパーの設定画面が表示される。

ステッパーのアトリビュートインスペクタ

 

設定項目を以下にまとめる。値には浮動小数点数も指定可能。

設定名 説明
1 Minimum 値の最小値
2 Maximum 値の最大値
3 Current 値の初期値
4 Step プラスボタンまたはマイナスボタンを1回押すごとの増減幅。
5 Autorepeat チェックを入れると、ボタンを押しっぱなしで値を連続増減させることができる。
6 Continuous AutorepeatとContinuousの両方にチェックが入っていると、ボタンを押しっぱなしにして値が連続増減したときにイベントメソッドも連続で呼ばれる。
7 Wrap チェックを入れると、値が最大値に達したときに最小値に飛ぶ。逆に、値が最小値に達したときは最大値に飛ぶ。意味的にスペルはWarp(ワープ)のような気がするが気のせいだろうか。

 

設定を以下のように変更した。

ステッパーの設定を変更

 

以下は、ステッパーの値が変更されたらラベルの値を更新するコードの例。

 

以下は実際のプレイ動画