2017-02-02 16 views
0

私は迅速にチェックボックスの作業コードを持っていますが、私がビルドしようとしているプロジェクトでは約50個のチェックボックスがあります。コードを少なくするという目標に合わせて、コピー&ペーストだけではなくすべてのことを書くより良い方法があるのだろうかと思います。私は1つのiboutletに複数のボタンをリンクしようとしましたが、それは別のボタンが選択されたものを選択してからタップされたように見える方法ではないと思います。複数のチェックボックスボタンを迅速に3

作業コード:

@IBOutlet weak var buttonOne: UIButton! 

var isButtonClicked: Bool! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    isButtonClicked = false 
} 

@IBAction func buttonClicked(_ sender: UIButton) { 

    if isButtonClicked == true { 
     isButtonClicked = false 
    } 
    else { 
     isButtonClicked = true 
    } 

    if isButtonClicked == true { 
     buttonOne.setImage(#imageLiteral(resourceName: "ButtonClicked"), for: .normal) 
    } 
    else { 
     buttonOne.setImage(#imageLiteral(resourceName: "ButtonUnclicked"), for: .normal) 
    } 
} 
+0

チェックボックスのラベルでtableViewを使用します。 –

+0

あなたは正確にあなたのチェックボックスを使って何をしようとしていますか? –

+0

ボタンにタグを割り当て、それをインデックスとして使用できる 'viewWithTag ... 'でアクセスすることができます。ちなみに、 'IBAction'の' sender'パラメータは、肯定されたボタンなので、 'IBAction'を使って' sender.state'で状態を取得し、 'sender.setImage ... 'でイメージを設定することができます。 – vadian

答えて

0

私は、チェックボックスのクラスを作成することをお勧めします。例:あなたは、ループのために使用してプログラムのチェックボックスを作成するには、このクラスを使用することができます

class CheckBox: UIButton { 
    var checked = false { 
     didSet { 
      if checked == true { 
       self.setImage(#imageLiteral(resourceName: "ButtonClicked"), for: .normal) 
      } 
      else { 
       self.setImage(#imageLiteral(resourceName: "ButtonUnclicked"), for: .normal) 
      } 
     } 
    } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     self.addTarget(self, action: #selector(tapped), for: .touchUpInside) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    func tapped() { 
     self.checked = !self.checked 
     if checked == true { 
      self.setImage(#imageLiteral(resourceName: "ButtonClicked"), for: .normal) 
     } 
     else { 
      self.setImage(#imageLiteral(resourceName: "ButtonUnclicked"), for: .normal) 
     } 
    } 
} 

。例:

for i in 0..<50 { 
    let checkbox = CheckBox(frame: CGRect(x: 0, y: i * 40, width: 40, height: 40)) 
    checkbox.tag = 1 
    self.someView.addSubview(checkbox) 
}