2016-08-04 6 views
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文を追加し、それが...

固定
+0

awakeFromNibのスーパーインプリメンテーションを呼び出して、親クラスに必要な追加の初期化を実行する機会を与えることができますか?このメソッドのデフォルト実装では何も行われませんが、多くのUIKitクラスは空ではない実装を提供します。 awakeFromNibメソッドの中でいつでもスーパーインプリメンテーションを呼び出すことができます。 – ldindu

+0

cellForRowAtIndexPathで設定していますか?テーブルビューはセルをリサイズするので、ボタンeverytimを更新する必要があります –

+0

@KuntalGajjarコード内のどこでもテーブルが使用されていません。 – omzy

答えて

0

と呼ばれることはなかったです。

関連する問題