UITableView在项目中是必用的控件,自定义UITableViewCell更是必备的。在UITableView的delegate中,有获取Cell点击事件的调用方法。但是,有时需要获取Cell内子控件的点击事件。有俩种方式:
1.这是我之前常常使用的,在- (UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath方法中,添加UIButton的点击事件或UIView的手势。
2.在自定义的Cell类中实现点击事件的方法。如果加载了其它类的委托,注意一定要在执行点击事件实现相关功能的代码之前,重新给delegate赋值。这样可以保证点击事件所在的Cell和执行的Cell是同一个。造成这样bug的原因:tableView只加载可以显示在屏幕上的Cell。每次滑动显示更多Cell,会再次运行- (UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath方法,Cell所加载的delegate为屏幕上显示的最后一个Cell的实例。所以会造成点击的Cell与执行相关操作的Cell不一致的情况。
点击与执行的自定义Cell实例不一致bug
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
- UITableView的数据源(dataSource)和代理(delegate) UITableView需要一个数...