iOS UITableView中关于cell里的按钮被点击时如何确定是哪一个section

在section=10;row=1;的UITableView中,每一个cell都带有一个按钮,例如如下的图片一样
iOS Simulator Screen Shot 2014年11月6日 下午8.35.36
每一个cell中都有一个“进入店铺的按钮”,但是如果我点击相应的cell要进入对应的店铺如何处理呢?
如果用”- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath”这个方法的话会的确可以用“indexPath.section”定位到我点击的是哪一个section,但是会使得整个cell都能点击。如果不介意的话这个方法当然可以,下面来说一下只通过按钮来确定是哪一个section的方法。
首先,你的按钮必须要绑定你的事件,和storyBoard拖个线就行了。
然后一定要在storyBoard仔细观察你的button上面一共有几层才能到你的cell,也就是属一下上面有几个父类才到cell
屏幕快照 2014-11-06 下午8.46.52
如图所示,方框里的是button,上面到cell一共有三层。为什么要看有几层,我们来看一下按钮的代码

1
2
3
4
5
6
7
- (IBAction)enterShopButton:(UIButton *)sender {
    UIView *v = [sender superview];//获取父类view
    UIView *v1 = [v superview];
    UITableViewCell *cell = (UITableViewCell *)[v1 superview];//获取cell
    NSIndexPath *indexPathAll = [self.tableView indexPathForCell:cell];//获取cell对应的section
    NSLog(@"indexPath:--------%@",indexPathAll);
}

首先第一个“v”是获取“View”这一层,然后继续调用superview往上翻(不懂的对照上面的图来看)
“v1”是获取“Content View”这一层,
“cell”就获取到了对应的cell这一层。然后取出cell的路径
屏幕快照 2014-11-06 下午8.58.53

1
path = 2 - 0

“2”代表当前cell所在的section,“0”代表当前cell里的row位置。
再通过“indexPathAll.section”就能获取当前的section了。
个人觉得非常好用,而且很容易理解。

posted @ 2017-02-23 15:36  孙富有(iOS工程师)  阅读(2778)  评论(0编辑  收藏  举报