0
CheckBox
にサブクラス化しました...下記のコードはストーリーボード(オンラインチュートリアルによる)で動作するようですが、コードで追加しようとすると動作しませんここでは...iOS 9 Swift UIButton CheckBoxサブクラスが画像を表示していません
class CheckBox: UIButton {
// Images
let checkedImage = UIImage(named: "Checked.png")! as UIImage
let uncheckedImage = UIImage(named: "Unchecked.png")! as UIImage
// Bool property
var isChecked: Bool = false {
didSet{
if isChecked == true {
self.setImage(checkedImage, forState: .Normal)
} else {
self.setImage(uncheckedImage, forState: .Normal)
}
}
}
override func awakeFromNib() {
self.addTarget(self, action: #selector(CheckBox.buttonClicked(_:)), forControlEvents: UIControlEvents.TouchUpInside)
self.isChecked = false
}
func buttonClicked(sender: UIButton) {
if sender == self {
isChecked = !isChecked
}
}
}
私はチェックボックスを追加するために、私のViewController
に使うコードです:
let checkbox = CheckBox(frame: CGRect(x: 5, y: 5, width: 40, height: 40))
print(checkbox.isChecked)
view.addSubview(checkbox)
問題はCheckBox
が表示されていないことです。私はバックグラウンドを与えて、フレームの初期化の下で私は正方形を見ることができますが、それをクリックしても何も起こらない場合.. buttonClicked
メソッドで印刷メッセージを追加した後。
私はAwakeFromNibは明らかに私はコンビニエンスイニシャライザを実装しなければならなかったストーリーボードなしで呼び出されることは決してありません .. awakeFromNibメソッドにprint文を追加し、それが...
固定
awakeFromNibのスーパーインプリメンテーションを呼び出して、親クラスに必要な追加の初期化を実行する機会を与えることができますか?このメソッドのデフォルト実装では何も行われませんが、多くのUIKitクラスは空ではない実装を提供します。 awakeFromNibメソッドの中でいつでもスーパーインプリメンテーションを呼び出すことができます。 – ldindu
cellForRowAtIndexPathで設定していますか?テーブルビューはセルをリサイズするので、ボタンeverytimを更新する必要があります –
@KuntalGajjarコード内のどこでもテーブルが使用されていません。 – omzy