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不一致的情况。
网友评论