Objective C - Wie benutzerdefinierte Callback-Methode zu implementieren, aber bestimmte Parameter erzwingen?

In meiner app habe ich ein custom UITableViewCell-Unterklasse, öffnet sich ein Farbwähler, wenn Sie gedrückt werden. von nun an werde ich beziehen sich auf diese Klasse als PickerCell.
Ich bin mit mehreren Instanzen von PickerCell in der gleichen UITableView.

Ich will nicht die Zelle zu reagieren, um die Auswahl einer Zeile in der Farbauswahl, denn es ist nicht eine gute MVC.
Stattdessen möchte ich den ViewController zu geben, die Zelle einen Rückruf, der aufgerufen wird, werden bei Auswahl der Zeile.

Die naheliegendste Möglichkeit ist das erstellen eines Protokolls wie PickerCellDelegate - und der view-controller wird vergehen sich an jede Zelle.

Mein problem mit diesem Ansatz ist, dass ich da mehrere PickerCells, meine Implementierung des Protokolls in der ViewController haben zu unterscheiden zwischen den einzelnen Zellen:

-(void) pickerCell : (PickerCell *) sender 
      didSelectRow : (NSInteger) row 
       inComponent : (NSInteger) component
{
    if (sender == X)
    //Something
    else if (sender == Y)
    //Something else...
    //etc...
}

Und ich hasse dieses coding style...

Stattdessen würde ich wirklich wie ein Mechanismus, der ermöglicht, dass der ViewController zu geben, seine eigene callback.

Ich kann die PickerCell zu akzeptieren "onRowSelectedSelector", aber wie Stelle ich sicher, dass dieser Selektor ist in dem format, das ich will? (Anzahl der Parameter ist das wichtigste)

Sogar noch besser, ich möchte Ihnen die Farbauswahl Zelle eine block zur Ausführung nach Auswahl, weil ich weiß, blocks kann definiert werden mit spezifischen Parametern. Darüber hinaus gibt es keine übergeben zu müssen, ein "target" - Objekt.

So, wie ich solch eine Sache tun?

Dank!

InformationsquelleAutor der Frage Avraham Shukron | 2012-03-28

Schreibe einen Kommentar