UITableViewCell 中 UIButton 的 NSIndexPath
Posted
技术标签:
【中文标题】UITableViewCell 中 UIButton 的 NSIndexPath【英文标题】:NSIndexPath for UIButton in UITableViewCell 【发布时间】:2014-03-14 01:15:58 【问题描述】:我正在尝试实现this link 中问题的答案中概述的块方法,但我不明白如何设置块。假设...
cell.onButtonTapped = ^
[self buttonSelectedAtIndexPath:indexPath];
是伪代码,假设我在该单元格中有一个 UITableViewCell
(不是自定义单元格)和一个 UIButton
,我将如何实际实现它。是否可以在不创建我自己的UITableViewCell
子类的情况下做到这一点?
【问题讨论】:
【参考方案1】:如果你打算这样做,你真的必须创建一个 UITableViewCell 子类,它是其按钮的目标,具有块的属性并在点击按钮时调用块。
实际上有一种简单的方法可以知道单元格的子视图(例如此处的按钮)来自哪个 indexPath。首先,您需要 tableView 坐标上的一个点,该点包含在子视图中。假设您将选择子视图的中心。将其转换为 tableView 的坐标:
CGPoint subViewCenter = [self.tableView convertPoint:subview.center fromView:subView.superView]; // because a view's center is on its superview's coordinates
获取索引路径:
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:subViewCenter];
【讨论】:
【参考方案2】:不,根据您所指的答案,您需要一个自定义 UITableViewCell。本质上,您是在单元格上调用一个方法并传递该单元格的当前 indexPath。
无论您使用块方法还是委托方法,您都需要自定义 UITableViewCell,因为您需要在某个地方存储 indexPath 和设置它的方法。
【讨论】:
以上是关于UITableViewCell 中 UIButton 的 NSIndexPath的主要内容,如果未能解决你的问题,请参考以下文章
为啥我必须删除为 UITableViewCell 添加的子视图,而不是在 UITableViewCell 的子类中?
当 UITextField 获得焦点时,从 UITableViewCell 继承类中更改 UITableViewCell 的高度
UITableViewCell 事件中的 UIButton 不起作用