[英]Propagating selection from within UITableViewCell to UITableView delegate
我子类化UITableViewCell并添加手势识别器。 手势识别器之一附加到单元格内容视图的子视图,只有当用户点击该子视图时,才应该“选择”该单元格。 我希望单元格将此选择传播到其包含的表视图,以便调用–[id<UITableViewDelegate> tableView:didSelectRowAtIndexPath:]
方法。
几个问题:
self.selected = YES
,则该单元格将突出显示,但不会调用委托的didSelectRowAtIndexPath。 换句话说,有没有办法利用我自己的自定义代码来利用Apple的didSelectRowAtIndexPath :?
正确的解决方案是创建您自己的表单元委托协议(尽管您表示不希望这样做)。
然后,您的表视图控制器可以成为委托。 然后,表视图控制器可以查找单元格的indexPath并调用didSelectRowAtIndexPath
委托方法。
这样的优点是您的自定义单元格不在乎事件的处理方式。 它只是告诉其代表发生了什么事。 该单元不需要其表或indexPath的任何知识。
视图控制器负责链接所需的功能。 这是应该做的。 职责分工明确。
要考虑的另一件事是tableView:didSelectRowAtIndexPath:
的实现和自定义单元格的委托方法的实现应各自调用一个处理相同逻辑的共享方法。 这比让一个委托方法直接调用另一个委托方法更有意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.