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("チェックされた")
//チェックされた時の処理
}
}
}
##終わりに
誰かの参考になれば幸いです
Qiitaさんいつもお世話になってるので感謝
間違えてるところ等ありましたら教えてくださいー
##参考
https://qiita.com/bohebohechan/items/49aa25ed9a24b04619a0