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需要一个数...