In meiner App habe ich eine benutzerdefinierte UITableViewCell-Unterklasse, die einen Picker öffnet, wenn sie gedrückt wird. Von nun an werde ich diese Klasse als PickerCell.
bezeichnen Ich verwende mehrere Instanzen von PickerCell in der gleichen UITableView
.Ziel C - Wie benutzerdefinierte Callback-Methode zu implementieren, aber bestimmte Parameter erzwingen?
Ich möchte nicht, dass die Zelle auf die Auswahl einer Zeile im Picker reagiert, weil es keine gute MVC ist. Stattdessen möchte ich, dass der ViewController der Zelle einen Rückruf gibt, der bei der Auswahl der Zeile aufgerufen wird.
Der offensichtlichste Weg ist, ein Protokoll wie PickerCellDelegate
zu erstellen und der View-Controller wird sich selbst an jede Zelle übergeben.
Mein Problem mit diesem Ansatz ist, dass da ich mehrere PickerCells habe, meine Implementierung des Protokolls in dem Viewcontroller wird zwischen jeder Zelle zu unterscheiden:
-(void) pickerCell : (PickerCell *) sender
didSelectRow : (NSInteger) row
inComponent : (NSInteger) component
{
if (sender == X)
// Something
else if (sender == Y)
// Something else...
// etc...
}
Und Ich hasse diese Art der Programmierung ...
Stattdessen würde ich wirklich einen Mechanismus mögen, der dem ViewController erlaubt, seinen eigenen Rückruf zu geben.
Ich kann zulassen, dass die PickerCell eine "onRowSelectedSelector
" akzeptiert, aber wie stelle ich dann sicher, dass dieser Selektor in dem Format ist, das ich möchte? (Anzahl der Parameter ist am wichtigsten)
Noch besser, ich würde gerne die Picker-Zelle eine Block auf Auswahl ausführen, weil ich weiß Blöcke mit bestimmten Parametern definiert werden können. Außerdem muss kein "Zielobjekt" übergeben werden.
Also, wie mache ich so etwas?
Danke!
Excellent erstellt nutzen zu können! genau das was ich gesucht habe! –