2017-10-18 7 views
1

私はUICollectionViewに4つのカスタムセルを持っています。セル0とセル3は同じ設計です。しかし、コードケースは関数とオブジェクトとほぼ同じです。両方とも3つの同じUIButtonsを持っています、1組はプレイヤー1用、もう1組はプレイヤー2用です。私はコードをコピーしてセル0のボタンから複製したくありません。何が最高です(私は主観的です)すべてのボタンに同じコードベースを使用させるには?ボタンにタグを付けると思ったので、どのボタンが呼び出されているのか分かりました。2つのUIButtonsコードを共有

これは一般的な仕事ですか?

@IBAction func undo(_ sender: UIButton) { 

    undo(sender: sender) 

} 

func undo(sender: sender) { 

    if sender.tag = 0 { 

      // Do something that is different for button 0 

    } else if sender.tag = 1 { 

     // Do something that is different for button 1 

    } 

    //Common to all buttons... 

} 
+0

コードが異なるデータを使用している場合は、* data *を受け取る関数を作成できます。次に、ボタンハンドラは使用するデータでその関数を呼び出します。 – theGleep

+1

間違いなくジェネリックではありません。タグを使うのは悪い習慣です。あなたの例から、共通点はあまり明確ではありません。 – Sulthan

答えて

1

それは完全にあなたがやろうとしているかを理解するために少し難しいですが、それはあなたが持っているあなたのセルにクロージャを注入(またはセルのビューモデルの理想的ないくつかの種類)ですることができますように聞こえます実行する動作を定義済みで、セルがタップされたときに呼び出すことができます。

関連する問題