ios - 如何在 Objective-C 和 Swift 中实现 "didSelectButtonInCellAtIndexPath:"?

标签 ios objective-c swift uitableview

我熟悉“UITableViewDelegate”。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath是有权力的。

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

如下图:

pic

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

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

最佳答案

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

  • 使用代码块。您可以将代码块用作按钮选择的处理程序,例如 var buttonSelectionHandler: ((_ index: IndexPath?) -> ())?并在按钮的选择器上调用它。参数index您可以用来指示哪个单元格负责该操作的 block ,不要忘记,您应该将索引路径存储在 cellForRowAtIndexUITableViewDataSource并在自定义单元格上具有适当的属性。
  • 创建具有您在协议(protocol)中的问题中所说的功能的自定义协议(protocol),制作您的 View Controller 或 View 模型或您用作UITableViewDataSource的任何其他东西要确认该协议(protocol),添加该协议(protocol)类型的属性,将实现对象分配给该属性,并在选择按钮时调用该方法。

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

    关于ios - 如何在 Objective-C 和 Swift 中实现 "didSelectButtonInCellAtIndexPath:"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52034306/

    相关文章:

    iOS Swift 如何创建协议(protocol)实例

    objective-c - NSTableView,[table selectedCell] 突然给出 nil 值

    swift - Iphone 7 和 iOS 10.1.1 上的谷歌地图无法正常工作

    ios - Xcode 无法读取 swift 文件

    ios - Objective-C中另一个线程中的计时器

    ios - MailCore2 - 在不下载图像或附件的情况下获取邮件内容?

    json - 按年月的 Swift JSON 搜索日期格式?

    ios - 在 NSUserDefaults 或文档目录中保存和读取图像数组及其数据

    ios - CGBitmapContextCreate : unsupported parameter combination: 8 integer bits/component iOS

    ios - Swift PDFDocument 为文件和 url 返回 nil