2016-03-27 17 views
0

私はこれがばかげた質問である場合、私は容赦してください。私は自分のプログラムにボタンのリストを持っています。いずれかのボタンをクリックすると、その特定のボタンに同じアクションが適用されます(背景の画像を変更します)。複数の複数のボタンを制御する最良の方法

最初にボタンごとに個別のボタンと個別のIBactionを作成しました。私はそれがあまりにも愚かだと考えました。ここで検索した後、ボタンの配列を作成して、同じアクションにリンクすることができることを学びました。したがって、次のコード。

@IBAction func unselectPai(sender: UIButton) { 
    switch sender{ 
     case pai[0]: 
     unselectPaiHelper(0) 
     case pai[1]: 
     unselectPaiHelper(1) 
     case pai[2]: 
     unselectPaiHelper(2) 
     case pai[3]: 
     unselectPaiHelper(3) 
     case pai[4]: 
     unselectPaiHelper(4) 
     case pai[5]: 
     unselectPaiHelper(5) 
     case pai[6]: 
     unselectPaiHelper(6) 
     case pai[7]: 
     unselectPaiHelper(7) 
     case pai[8]: 
     unselectPaiHelper(8) 
     case pai[9]: 
     unselectPaiHelper(9) 
     case pai[10]: 
     unselectPaiHelper(10) 
     case pai[11]: 
     unselectPaiHelper(11) 
     case pai[12]: 
     unselectPaiHelper(12) 
     case pai[13]: 
     unselectPaiHelper(13) 
     default: return 
    } 
} 

しかし、私はこれを行うためのさらに簡単な方法があると感じ、いくつかのポインタをいただければ幸いです。このよう

答えて

2

@IBAction func unselectPai(sender: UIButton) { 
    if let ix = pai.indexOf(sender) { 
     unselectPaiHelper(ix) 
    } 
} 
+0

例は、次のいずれかに通じ落ちないよう、スウィフトの 'スイッチcase'を模倣する' break'を追加する必要があります。大文字と小文字が一致すると、 'fallthrough'を指定しない限り、他の場合は評価されません。 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ControlFlow.html#//apple_ref/doc/uid/TP40014097-CH9-ID140 – BallpointBen

+0

@Robertを参照してください。ループはありません。 1ライナーです。 – matt

関連する問題