首页 > 解决方案 > 如何在 Objective-C 和 Swift 中实现“didSelectButtonInCellAtIndexPath:”?

问题描述

我熟悉“UITableViewDelegate”。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath是有权力的。

如何在 Objective-C 中实现 "tableView: didSelectButtonInCellAtIndexPath: " ,在 Swift 中也很棒。

如下图:

图片

当单击红色圆圈中的按钮时,我使用自定义 UITableViewCell 委托。

那么如何将 UITableViewCell 委托升级为自定义 UITableView 委托,以优雅地处理事件。

标签: iosobjective-cswiftuitableview

解决方案


这很简单,实际上有几种方法可以实现您想要的:

  1. 使用代码块。您可以将代码块作为按钮选择的处理程序,var buttonSelectionHandler: ((_ index: IndexPath?) -> ())?并在按钮的选择器上调用它。您可以使用块的参数index来指示哪个单元格负责该操作,并且不要忘记,您应该在自定义单元格上存储索引路径cellForRowAtIndexUITableViewDataSource具有适当的属性。

  2. 创建具有您在协议中的问题中所说的功能的自定义协议,制作您的视图控制器或视图模型或您用作UITableViewDataSource确认该协议的任何其他东西,添加该协议类型的属性,分配实现对象到属性,并在选择按钮时调用该方法。

还有其他一些方法,但我认为这足以解决您的问题。希望这可以帮助!


推荐阅读