ios - 处理 UITableViewcell subview 的 Action (事件)的正确方法是什么?

标签 ios objective-c uitableview swift model-view-controller

我有一个带有自定义单元格的 UITableView。每个单元格都有一个相当复杂的布局和许多 subview ,所有这些都具有事件操作:UIImageView 带有手势识别器,几个 UIButtons 带有一些操作,两个 UILabel 带有手势识别器。 所以我很感兴趣是否有一些优雅的方法来为他们处理目标 Action ? 现在我看到三种方式:

  1. cellForRowAtIndexPath:
  2. 中使用 block (BlocksKit 来救援)处理操作
  3. 创建自定义类 CellEventHandler,将所有需要的依赖项( Controller 的导航 Controller 、数据数组等)传递给它,并将所有单元格的 View 操作选择器放在那里。
  4. 在TableViewController中写入所有选择器(默认方式)

但我并不满足于所有这些方式。有人可以描述一些有助于使 Controller 变薄并且易于维护的优雅方法吗?我确定此工作流应该存在某种模式。

最佳答案

使用委派。构建单元格时,将其委托(delegate)属性设置为符合委托(delegate)协议(protocol)的某个实例。触发操作时,只需将行为委托(delegate)给委托(delegate)人即可。

这样,您最终会得到定义明确的委托(delegate)协议(protocol)和封装在该类中的功能。委托(delegate)人是否将由您决定。 TableViewController 或自定义类。

关于ios - 处理 UITableViewcell subview 的 Action (事件)的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30444657/

相关文章:

ios - 使用 UIView Animation 在 Xcode 中制作动画时,按钮不执行被点击的操作

ios - 显示在标签栏后面的 TableView

ios - Firebase 查询没有为 TableView 填充数组。我该如何解决这个问题?

ios - UICollectionView VS UITableview

ios - coredata 获取数组元素

iphone - 突出显示文本字段内的文本

iphone - 我的 UITableView cellForRowAt Index for Single Selection 有什么问题?

ios - 如何验证文本字段以仅显示 2 种文本

objective-c - 在 objective-c 中导入 header

ios - 快速创建自定义 TableViewCell