どうも、こんにちはTOSHです!
最近、Swiftでiosアプリ制作にはまっているのですが、その際にたくさんのUILabelに対して、同じ動作をさせる際に、配列に入れられたらなぁと思っていたのですが、それについての記事がなかったので書かせていただきます。
方法A
UILabelを配列にしてみる
まずは、storyboardにlabelを5つほど置いてみます。
ここからは、コードにうつります
通常、UILabelを関連付けする際には、
@IBOutlet weak var label: UILabel!
のように書きますが、UILabelを配列にする際には、weak参照はできないので
下のように書きます。
@IBOutlet var labelArray: [UILabel] = []
このように書くと、UILabelの配列を作成できます。
そして、関連付けをしていく順番に
UILabelArray[0]
UILabelArray[1]
UILabelArray[2]
と定義されていきます。
実際にできているのかを確認してみる
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
for i in 0...4{
labelArray[i].text = "label number \(i)"
}
}
のようにやってみると、(for文の中身は一行ですが、Swiftでは一行であっても{}を省略はできないので注意してください!)
無事、labelを配列に置き換えることができました。
これで完成です。お疲れ様でした。
サンプルプログラム
参考までに、githubに、サンプルプログラムを載せて置いたので参考にしてください!
サンプルプログラム
方法B
もう一つ方法があります。
そもそも、UILabelの配列の変数を作ってしまい。一つ一つUILabelを@IBOutLet
で定義をしてあげ、
その配列の中に入れてしまう方法です。
@IBOutlet weak var label0: UILabel!
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
@IBOutlet weak var label3: UILabel!
let labelArray: [UILabel] = [label0, label1, label2, label3]
方法Aでは、UIパーツの弱参照が切れてしまうので、こちらの方法をとると弱参照を保持したまま、配列にすることができます。
正直どっちがいいのかは一長一短なので、使いやすさに応じて使ってみてくださいー!