0
1

More than 1 year has passed since last update.

swiftでチェックボックスを作る in コード

Posted at

CheckBoxのカスタムボタンクラスを作る

import UIKit

final class CheckBox: UIButton {

    //MARK: - プロパティ等
    let checkedImage = UIImage(systemName: "checkmark.square.fill")
    let uncheckedImage = UIImage(systemName: "square")

    var isChecked: Bool = false {
        didSet{
            if isChecked == true {

                self.setImage(checkedImage, for: .normal)
            } else {
                self.setImage(uncheckedImage, for: .normal)
            }
        }
    }

    //MARK: - ライフサイクル
    override init(frame: CGRect) {
        super.init(frame: frame)

        self.setImage(uncheckedImage, for: .normal)
        addTarget(self, action: #selector(buttonClicked), for: .touchUpInside)
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func layoutSubviews() {
        super.layoutSubviews()
        self.layer.cornerRadius = 10
    }

    //MARK: - 関数等

    @objc func buttonClicked(sender: UIButton) {
        if sender == self {
            isChecked = !isChecked
        }
    }

}


ViewController

import UIKit

final class ViewController: UIViewController {

    private lazy var checkButton: CheckBox = {
        let button = CheckBox()
        button.addTarget(self, action: #selector(setPassword), for: .touchUpInside)
        button.translatesAutoresizingMaskIntoConstraints = false
        return button
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .white

        view.addSubview(checkButton)
        checkButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        checkButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    }

    @objc func setPassword() {

        if checkButton.isChecked {
            print("チェックされた")
            //チェックされた時の処理
        }

    }

}


完成イメージ

チェックボタン.gif

終わりに

誰かの参考になれば幸いです
Qiitaさんいつもお世話になってるので感謝
間違えてるところ等ありましたら教えてくださいー

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1