swiftでチェックボックスを作る in コード
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("チェックされた")
//チェックされた時の処理
}
}
}
完成イメージ
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
}
}
}
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さんいつもお世話になってるので感謝
間違えてるところ等ありましたら教えてくださいー
参考
Author And Source
この問題について(swiftでチェックボックスを作る in コード), 我々は、より多くの情報をここで見つけました https://qiita.com/IwaskIYuta/items/ef98286e0beeccf56398著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .