gpt4 book ai didi

iOS 在自定义类中处理 didSelectRowAtIndexPath

转载 作者:可可西里 更新时间:2023-11-01 02:23:57 25 4
gpt4 key购买 nike

我已经看到了如何为自定义类中的事件设置处理程序的方法。像这样:

@implementation CustomClassWithTable {
void (^_cellHandler)(Cell *cell);
}

...

- (void)setCellHandler:(void (^)(Cell *))handler
{
_cellHandler = handler;
}

...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
...
if (_cellHandler) {
_cellHandler(cell);
}
}

然后在 Controller 中它只需要设置 cellHandler 就可以了。我喜欢。首先,这种方法(模式)的名称是什么?其次,我怎样才能 swift 做到这一点?这是最好的方法吗?可以说我的自定义类(菜单)中有表格,我希望能够在我的 View Controller 中获取选定的单元格。我应该使用这种方法还是其他方法(例如委托(delegate)模式)?

最佳答案

您在上面的代码中所做的是使用 Objective-C block 进行委托(delegate)。 Swift 有一个类似的特性,称为闭包。由于此 block 能够在运行时设置赌注,您还可以使用策略模式在选择表格行时委托(delegate)不同的行为。

var cellHandler : ((cell: Cell) -> Void)?

if let callback = cellHandler {
callback(cell)
}

关于iOS 在自定义类中处理 didSelectRowAtIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28796523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com