iOS在自定义类中处理didSelectRowAtIndexPath



我看到了如何在自定义类中设置事件处理程序的方法。类似这样的东西:

@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就可以工作了。我喜欢它。首先这个图案叫什么名字?第二,我怎么能在swift中做到这一点?这是最好的方法吗?比方说,我在自定义类(菜单)中有一个表,我希望能够在视图控制器中获得选定的单元格。我应该使用这个方法还是其他方法(例如委托模式)?

您在上面的代码中所做的是使用目标C块进行委派。Swift有一个类似的功能,叫做闭包。因为这个块可以在运行时设置赌注,所以当选择表行时,您也可以使用策略模式来委派不同的行为。

var cellHandler : ((cell: Cell) -> Void)?
if let callback = cellHandler {
    callback(cell)
}

相关内容

  • 没有找到相关文章

最新更新