UIButtonのアクションの管理の仕方について質問をさせていただきます。
つかぬ事をお聞きしてしまうかもしれないのですが、どなたか回答いただけたら幸いです。


@IBOutlet weak var button_0: UIButton!
@IBOutlet weak var button_1: UIButton!
@IBOutlet weak var button_2: UIButton!
@IBOutlet weak var button_3: UIButton!
//...以下複数個続く

と複数個のUIButtonをViewControllerなどに結びつけて
それぞれのボタンのアクションを設定したい場合

var buttons:[UIButton] = []

と配列などを用意して管理するViewControllerのViewDidLoadなどで

buttons.append(button_0)
buttons.append(button_1)
buttons.append(button_2)
//...以下個数分続く
for i in 0..<buttons.count{
    buttons[i].tag = i
    buttons[i].addTarget(self, action: #selector(ToolView.action(_:)), forControlEvents: .TouchUpInside)
}

と記述するのは単調であまり良くない気がしてしまうのですが なにか良い方法はありますか?
やはり、複数個の部品の設置はコードから作成するほうが良いのでしょうか?

※ViewControllerのactionはこのような感じで使おうと思っています...

@objc private func action(sender: UIButton){
    switch sender.tag {
    case 0:
        print("button_0")
    case 1:
        print("button_1")
    case 2:
        print("button_2")
    //...個数分続く
    default:break
    }
}



おかげさまで解決しました。
quesera2さん、画像付きでとても分かりやすかったです。ありがとうございます。
Le Pere d'OOさんも当日の深夜に返していただき、助かりました。ありがとうございます。

よく調べればもしかしたら出てきた質問だったかもしれませんが、私自身初めて知ることができたので良かったです。
@IBOutlet Collectionの記事
はじはじアプリ体験記さん
スタック・オーバーフロー