提供されているクラスの利用方法
前節では独自クラスを作成し、それを利用する方法を見ました。
前節での内容を踏まえて、今回はAppleが提供しているクラスの利用方法の一例を見てみましょう。
とはいえ、レッスンによってはすでにインスタンス化を経験されている方も多いと思います。
Storyboardで、ライブラリから部品を画面に配置し、コード化する。
これは、あらかじめクラスという設計書があり、これをいくつも実体化(インスタンス化)して使っていた、というのが真相です。
それでは見ていきましょう。今回はStoryboardではなく、コーディングのみで実体化していきます。
クラスのインスタンス化
Xcodeに用意されているスイッチボタン(UISwitchクラス)をインスタンス化してみましょう。
1 |
var radio = UISwitch() |
プロジェクトを作成し、.swiftファイルに記述しても良いですし、
Playgroundでプレビュー表示することもできます。(スイッチが表示されます)
※どちらの場合でも、コード内にimport UIKitの記載があることを確認し、なければ書き足してください。
これは、その使いたいクラスが記載されたコードファイルを反映させるための記述です。
これがなければ、用意されたクラスを呼び出せません。
クラスをインスタンス化する際に実行している「クラス名()」は、Swiftがデフォルトで持っているデフォルトイニシャライザ(default initializer)という、インスタンスを生成する関数を実行しています。
デフォルトイニシャライザは、引数ありのイニシャライザが存在する場合を除いて暗黙的に生成されます。(つまり、init()は省略可能で、書かなくともvar インスタンス = クラス名()とすることができます。
しかし、一つでもinit(引数)を書いてしまうと、init()の引数がないパターンはあえて存在しないんだな、とコンピュータが判断し、var インスタンス = クラス名()はエラーとなります。)
・Playground で実行
このように、実体化(インスタンス化)されることを確認しましょう。
プロパティの設定
UISwitchクラスのインスタンスのプロパティを変更してみましょう。今回変更するプロパティは「isOn」です。
そのクラスにどのようなプロパティがあるかは、Appleの公式HPを見たり、インスタンス名の後に.を打ち込んだ後に出てくる入力候補を見たり、クラスの記載ファイルを見て(control + commandを押しながらクラス名をクリック)確認します。
「isOn」はBool型のプロパティで、スイッチのオン/オフを「true」「false」で管理しています。
1 |
radio.isOn = true |
・Playgroundでの実行結果
Swift 4では、Bool型のプロパティの場合に、trueかfalseのどちらかの値をとるといった意図でプロパティ名の先頭に「is」を付与することが推奨されています。
メソッドによるプロパティの設定
メソッドを利用してプロパティに値を設定する方法を見ていきましょう。
UISwitchクラスを例に出すと、プロパティ「isOn」を設定するメソッド「setOn」というものがあります。
プロパティに値を設定するメソッド名は、「set + プロパティ名」というルールになっています。先ほどの「isOn」というプロパティ名の場合は接頭辞の「is」を削除して考えます。これも入力候補や公式HPを見て確認すると良いでしょう。
なお、プロパティ値を参照するためのメソッドもありますが、Bool型以外はプロパティ名そのままの名前です。
1 |
インスタンス名.メソッド名(設定値) |
メソッド「setOn」の第1引数に、スイッチのオン/オフを指定します。
第2引数(引数名animated)には、アニメーションをしながらスイッチを切り替えるかのオン/オフを指定します。
ここではアニメーションをせずにスイッチをオフするために、第1引数にfalse、第2引数にfalseを設定します。
1 |
radio.setOn(false, animated: false) |
Playgroundでの実行結果