案例:
由于在应用开发过程中,需要实现一个功能:点击tableviewcell上的一个按钮,弹出popver窗口。为了设置弹出窗口箭头的准确位置,就必须知道坐标,这个坐标的计算的关键就在于获取该按钮所在cell的indexpath了。
难点:
tableview在滚动时存在循环的问题,所以仅仅在初始化cell时将按钮的tag设置为[indexPath row]是没用的
方法:
1.按照上面的方法将按钮的tag设置为[indexPath row](事实上我建议再加上一个较大的数字,比如[indexPath row]+1000,我想你应该不会只有按钮需要设置tag,如果和别的控件有相同的tag一定会带来很多麻烦~~~)
2.将cell的tag设置为和按钮的tag相同
3.按如下方法,在按钮触发事件中获取indexPath
- (void)detailInfo:(id)sender
{
UIButton *detailButton = (UIButton *)sender;
NSIndexPath *indexpath;
for (UITableViewCell *cell in [self.tableView visibleCells]) {
if (cell.tag == detailButton.tag) {
indexpath = [self.tableView indexPathForCell:cell];
}
}
}