В моем приложении есть пользовательский подкласс UITableViewCell, который при нажатии выдает всплывающее окно.отныне я буду ссылаться на этот класс как PickerCell.
Я использую несколько экземпляров PickerCell в одном и том же UITableView
.
Я не хочу, чтобы ячейка реагировала на выборстрока в сборщике, потому что это не хороший MVC.Вместо этого я хочу, чтобы ViewController дал ячейке обратный вызов, который будет вызываться при выборе строки.
Самый очевидный способ - создать протокол, подобный PickerCellDelegate
, и контроллер представления передаст себя каждой ячейке.
Моя проблема с этим подходом состоит в том, что, поскольку у меня есть несколько PickerCell, моя реализация протокола в 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
", но тогда как мне убедиться, что этот селектор в нужном мне формате?(Количество параметров является наиболее важным)
Еще лучше, я хотел бы дать ячейке Пикера блок для выполнения при выборе, потому что я знаю, что блоки могут быть определены с конкретными параметрами.Кроме того, нет необходимости передавать «целевой» объект.
Так как мне это сделать?
Спасибо!