Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
14
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

SwiftでUIButtonを動的に生成しクリックされたボタンを判別する方法

SwiftでUIButtonを動的に生成しクリックされたボタンを判別する方法です。

UIButtonを継承したクラスを作って実現しています。
もっとスマートな方法があれば教えてほしいです。

ソース

ViewController.swift

import UIKit

class ViewController: UIViewController {

    // UIButtonを継承した独自クラス
    class MyButton: UIButton{
        let x:Int
        let y:Int
        init(x:Int,y:Int,frame:CGRect){
            self.x = x
            self.y = y
            super.init(frame:frame)
        }
        required init(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
    }

    //メイン
    override func viewDidLoad() {
        super.viewDidLoad()
        for x in 0...5{
            for y in 0...5{
            //位置を変えながらボタンを作る
                var btn : UIButton = MyButton(
                    x:x,
                    y:y,
                    frame:CGRectMake(CGFloat(x)*30,CGFloat(y)*30,20,20))
            //ボタンを押したときの動作
            btn.addTarget(self, action: "pushed:", forControlEvents: .TouchUpInside)
            //見える用に赤くした
            btn.backgroundColor = UIColor.redColor()
            //画面に追加
            view.addSubview(btn)
            }
        }
    }

    //ボタンが押されたときの動作
    func pushed(mybtn : MyButton){
        //押されたボタンごとに結果が異なる
        println("button at (\(mybtn.x),\(mybtn.y)) is pushed")
    }
}

実行結果

画面スナップショット

hoge.png

左上から右下に順番にボタンを押すと以下のようになる

button at (0,0) is pushed
button at (1,1) is pushed
button at (2,2) is pushed
button at (3,3) is pushed
button at (4,4) is pushed
button at (5,5) is pushed
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
14
Help us understand the problem. What are the problem?