我已经看到了如何为自定义类中的事件设置处理程序的方法。像这样:
@implementation CustomClassWithTable {
void (^_cellHandler)(Cell *cell);
}
...
- (void)setCellHandler:(void (^)(Cell *))handler
{
_cellHandler = handler;
}
...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
...
if (_cellHandler) {
_cellHandler(cell);
}
}
然后在控制器中它只需要设置cellHandler就可以了。我喜欢。首先这个aproach(模式)的名称是什么?第二,我怎么能在swift中做到这一点?它是最好的方法吗?假设我的自定义类(菜单)中有表,我希望能够在我的视图控制器中选择单元格。我应该使用这个方法还是其他东西(例如委托模式)?
答案 0 :(得分:1)
您在上面的代码中所做的是使用目标C块进行委派。 Swift有一个类似的特征叫做闭包。因为此块具有在运行时下注的能力,所以您还可以使用策略模式在选择表行时委派不同的行为。
var cellHandler : ((cell: Cell) -> Void)?
if let callback = cellHandler {
callback(cell)
}