では動作しません私はUIButton
のサブクラスを作成しました:タッチアップ(@IBAction)はUIButtonのサブクラス
import UIKit
@IBDesignable
class CheckboxButton: UIButton {
@IBInspectable var checkboxBackgroundColor: UIColor = Project.Color.baseGray
@IBInspectable var textColor: UIColor = Project.Color.mainDarkText
@IBInspectable var checkboxHighlightedBackgroundColor: UIColor = Project.Color.main
@IBInspectable var highlightedTextColor: UIColor = Project.Color.mainBrightText
// MARK: - Properties
var isChecked: Bool = false {
didSet {
changeState()
}
}
// MARK: - Overrides
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}
override func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool {
if isChecked {
isChecked = false
} else {
isChecked = true
}
return false
}
override func prepareForInterfaceBuilder() {
changeState()
}
// MARK: - @IBActions
// MARK: - Functions
private func setupView() {
isUserInteractionEnabled = true
changeState()
}
private func changeState() {
if isChecked {
backgroundColor = checkboxHighlightedBackgroundColor
self.setTitleColor(highlightedTextColor, for: .normal)
} else {
backgroundColor = checkboxBackgroundColor
self.setTitleColor(textColor, for: .normal)
}
}
}
今私はストーリーボードの内側にボタンを追加し、それをクラスCheckboxButton
を与えました。すべてが機能します。そして、私はこのようなIBAction
を追加しました:
@IBAction func pointBtnTapped(_ sender: CheckboxButton) {
print("tapped")
selectButton(withNumber: sender.tag)
}
しかし、これは動作しません(何も出力しません)。通常のボタンで動作しますが、ボタンがサブクラスCheckboxButton
の場合は動作しません。あなたはなにか考えはありますか?
編集:スクリーンショット https://www.dropbox.com/s/ewicc349ag9l6y2/Screenshot%202016-10-06%2023.41.39.png?dl=0
https://www.dropbox.com/s/vxevzscueproivc/Screenshot%202016-10-06%2023.42.33.png?dl=0 (ここではそれらを埋め込むことができなかった理由がわからないようにしてください。)
ありがとうございます!
それは動作しますか? – BaseZen
それがうまくいかないと言うと、クラッシュしたり、警告/エラーを表示したり、黙って失敗したりしますか?また、Storyboardのボタンのタイプや名前を変更した場合は、 'IBAction'接続を再描画して古いものを削除する必要があります。メソッドの隣の小さな円は塗りつぶされているように見えますか? – BaseZen
いいえ、 'AnyObject'は動作しません。つまり、何も起こりません。クラッシュしないで、何も印刷しません。申し訳ありませんが、もし私のテキストが誤解を招いていたら。私はサークルをチェックしたところで塗りつぶされています – Quantm