В моем приложении у меня есть пользовательский подкласс UITableViewCell, который появляется при выборе. отныне я буду ссылаться на этот класс как PickerCell.
Я использую несколько экземпляров PickerCell в том же UITableView
.
Я не хочу, чтобы ячейка отвечала на выбор строки в сборщике, потому что это не хороший MVC. Вместо этого я хочу, чтобы ViewController передавал ячейке обратный вызов, который будет вызываться при выборе строки.
Наиболее очевидным способом является создание протокола типа PickerCellDelegate
, и контроллер представления передаст себя в каждую ячейку.
Моя проблема с этим подходом заключается в том, что, поскольку у меня есть несколько PickerCells, моя реализация протокола в ViewController должна различать каждую ячейку:
-(void) pickerCell : (PickerCell *) sender
didSelectRow : (NSInteger) row
inComponent : (NSInteger) component
{
if (sender == X)
// Something
else if (sender == Y)
// Something else...
// etc...
}
И Я ненавижу этот стиль кодирования...
Вместо этого мне бы очень понравился механизм, позволяющий ViewController давать ему собственный обратный вызов.
Я могу позволить PickerCell принять "onRowSelectedSelector
", но как я могу обеспечить, чтобы этот селектор был в том формате, который я хочу? (Количество параметров является самым важным)
Еще лучше, я хотел бы дать ячейке Picker block для выполнения при выборе, потому что я знаю, что блоки могут быть определены с определенными параметрами. Кроме того, нет необходимости передавать "целевой" объект.
Итак, как мне это сделать?
Спасибо!