Nella mia app ho una sottoclasse UITableViewCell personalizzata che fa apparire un selettore quando premuto. da ora in poi mi riferirò a questa classe come PickerCell.
Sto usando diverse istanze di PickerCell nello stesso UITableView
.Obiettivo C - Come implementare il metodo di callback personalizzato ma applicare un parametro specifico?
Non voglio che la cella risponda alla selezione di una riga nel selettore, perché non è un buon MVC. Invece voglio che il ViewController dia alla cella un callback che verrà chiamato alla selezione della riga.
Il modo più ovvio è creare un protocollo come PickerCellDelegate
e il controller di visualizzazione passerà a ciascuna cella.
Il mio problema con questo approccio è che da quando ho diverse PickerCells, la mia implementazione del protocollo nel ViewController dovrà distinguere tra ogni cella:
-(void) pickerCell : (PickerCell *) sender
didSelectRow : (NSInteger) row
inComponent : (NSInteger) component
{
if (sender == X)
// Something
else if (sender == Y)
// Something else...
// etc...
}
E odio questo stile di codifica ...
Invece mi piacerebbe davvero un meccanismo che permetta al ViewController di dargli il proprio callback.
Posso consentire a PickerCell di accettare un "onRowSelectedSelector
", ma come faccio a garantire che questo selettore sia nel formato che desidero? (Il numero dei parametri è il più importante)
Ancora meglio, vorrei dare alla cella Picker un blocco da eseguire alla selezione, perché so che i blocchi possono essere definiti con parametri specifici. Inoltre non è necessario passare un oggetto "bersaglio".
Quindi, come faccio a fare una cosa del genere?
Grazie!
Eccellente! esattamente quello che stavo cercando! –