Вместо Делегат Я предпочитаю использовать Блок (Objective-C) или Закрытие (Swift)
Это примерНасколько элегантно можно легко управлять действиями с кнопками, если необходимо обновить ячейку, тогда это также можно легко выполнить, не нужно обновлять весь просмотр таблицы и все.
В Objective-C:
CustomTableViewCell.h
@property (nonatomic, weak) IBOutlet UIButton *button;
@property (nonatomic, copy) void (^ButtonTapAction)(CustomTableViewCell *aCell);
CustomTableViewCell.m
//Method assign to that button
- (IBAction)arrowButtonTapped:(id)sender
{
if (self.ButtonTapAction) {
self.ButtonTapAction(self);
}
}
ячейка Используется в tableview cellForRowAtIndexpath:
__weak typeof(self) weakSelf = self;
cell.arrowButtonTapAction = ^(CustomTableViewCell *aCell){
// Do Whatever you want to do on the button click
};
Используя этот код вам не нужнодля перезагрузки ячейки.
In Swift:
CustomTableCell.swift
typealias ButtonHandler = (_ aCell:CustomTableCell) -> Void
var buttonClickHandler:ButtonHandler? = nil
@IBAction func buttonClick(_ sender: Any) {
if buttonClickHandler != nil {
self.buttonClickHandler!(self)
}
}
ячейка Используется в ячейке табличного представленияForRowAtIndexpath:
cell.buttonClickHandler = { aCell in
// Do Whatever you want to do on the button click
}
Используя этот код, вам не нужно перезагружать Cell.Кроме того, нет необходимости поддерживать его indexpath, и все вещи просто обновляют все, что вы хотите сделать или нуждались в каких-либо действиях для кнопки, просто напишите в cellForIndexpath, который установлен.
Выше для For нажатием одной кнопки в строке.Для выбора целой строки вы можете реализовать DidSelectRow Delegate