🔨

Swift - 複数のViewを1つのoutletに繋いで処理する方法

2022/05/14に公開

作るもの

今回は複数のボタンを一つのoutletに繋いで、まとめて角を丸くする処理と、
複数のボタンのActionを一つにまとめてどのボタンが押されたか判別する機能を実装します。

完成イメージ

実装手順

ボタンをOutletではなく「Outlet Collection」を選択して追加します。

Actionは普通に追加した後に他のボタンも繋げます。
Outletも同様に全てのボタンを繋げてください。

ボタンそれぞれに手動で「Tag」に番号を入れます。

完成コード

ViewController.swift
import UIKit

class ViewController: UIViewController {
    
    @IBOutlet var button: [UIButton]!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        button.forEach{ $0.layer.cornerRadius = 35 }
    }
    
    @IBAction func buttonTapped(_ sender: UIButton) {
        print("ボタン\(sender.tag)が押されました")
    }
}

ポイント

まとめて見た目を整える

button.forEach{ $0.layer.cornerRadius = 35 }

ここでボタンを丸角にしています。
buttonは今配列になっており、そこに入っているボタンたちをforEachでひとつひとつ取り出して処理をしています。
「$0」には取り出した要素が入ります。

ボタンの判別

@IBAction func buttonTapped(_ sender: UIButton) {
    print("ボタン\(sender.tag)が押されました")
}

「sender.tag」に押されたボタンのタグ番号が入り、これを使ってどのボタンを押されたのか判別できます。

Discussion