自定义cell里的button获得cell的indexpath

假如你是用代码方式直接将控件(如UILabel、UIButton等)加到UITableView的cell中去的话,,,在出了

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

//自定义代码

return cell;

}

这个函数后,,,当你点击cell的时候想知道到底是点击了第几行,,这时候你就可以通过在以下代码获得点击的行数。

UITableViewCell *cell = (UITableViewCell *)[btn superview];

NSIndexPath *indexPath = [_myTableView indexPathForCell:cell];

NSLog(@"indexPath is = %i",indexPath.row);

注释:btn是你通过代码的方式添加到cell的一个Button,_myTableView是UITableView的一个关联变量。

假如你是通过新建 .xib的方式新建一个继承UITableViewCell的 .xib(例如:shopCell.xib)文件添加到原有UITableView的cell的方式的话,,,用上面这种方法是获取不到点击cell所在的行数的,也就是说你不知道点击的cell到底是第几行。

同样可以用上面的代码,,不过要稍微修改一下:

UITableViewCell *cell = (UITableViewCell *)[[[btn superview] superview] superview];

NSIndexPath *indexPath = [_myTableView indexPathForCell:cell];

NSLog(@"indexPath is = %i",indexPath.row);

解释:第一句代码中的[btn superview]是shopCell 的contentView,第二个superview是shopCell自己本身的cell,第三个superview是UITableView的cell,,注意不要弄混淆了。

知道row,然后通过row确定是哪一行的cell

NSIndexPath *index1 =  [NSIndexPath indexPathForItem:row inSection:0];

UITableViewCell *cell1 =  [_myTableView cellForRowAtIndexPath:index1];

时间: 2024-10-08 10:41:52

自定义cell里的button获得cell的indexpath的相关文章

代码拾遗录--轻松获取Cell里的button的indexPath

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier from:(UITableView*)table{    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];    if (self) {        self.tableView = table;      

通过点击cell上的Button获取tableView的indexPath

- (void)buttonClickedWith:(UIButton *)button event:(UIEvent *)event { NSSet *touches =[event allTouches]; UITouch *touch =[touches anyObject]; CGPoint point = [touch locationInView:mainTableView]; NSIndexPath *indexPath= [mainTableView indexPathForRo

IOS 通过button获取cell

在使用tableview时,有时我们需要在cell中添加button和label,以便添加某项功能,而且往往点这个button的方法中需要知道button所在cell中label内存放的值. 一般而言我们可以用tag来做,但当table有很多行的时候,设置tag就没有那么方便了,这里我介绍另外一种方法. 我们知道IOS里每一个视图都有父视图,那我们可不可以用这个方法获取cell呢? 经过一番查找测试发现superview方法可以找到button所在cell 给button写上这样的方法 -(vo

ios 添加到cell 上的button点击无效!扩大button的点击区域(黑魔法)

一般情况下点击效果都是正常的!要不然你对它做了什么?一般细心的小伙伴都没有遇到这种情况,但是呢! 当然我是二班的!在这里我主要讲两个问题,解决问题和普及魔法. 一.普及问题(button在cell上点击无效) 自定义一个cell,cell里边creat了一个button!然后调试了半天,什么反应都没有! 1.button的enable 设置为yes可点击的. 1.我以为我设置了交互禁用! self.userInteractionEnabled = YES; 2.button的frame越界了!

iOS tableViewCell 在自定义高度方法中遇到的问题,cell高度为0,cell显示不出来,cell直接显示第几个而不是...cell显示个数不对

遇到以上问题可以看看你的cell高度中是否有,自定的高度,有了继续看,没有了继续百度... 在文字排版中,少不了自适应文字高度,行间距什么的:显然cell的高度时不固定的,如果复用自定义的cell的话,又要及时把高度传给cell,进行赋值: 在-(UITableViewCell*)tableview... cellForRow...{在里边进行计算cell高度时可以的,需要将数值赋值给 cell.height=这个属性: 不可以设置全局CGFloat传值,因为赋值还没有进行完,在HeightRo

iOS 在tableview的cell中的button上,添加选中状态的解答

大家都知道tableview的复用当然不知道的话可以个我留言或者在网上找  在这我就不多说了: 红色就是选中状态,但是这时候我们会发现往下拉当cell消失后出来新的cell中的button也是选中状态.话不多说下面上解决方法的代码! -(NSMutableArray *)boolArr{ //创建一个数组在这里数组中的NSNumber对象的下标是于 indexPath一一对应的这里我给他一百个根据自身的情况赋值 if (_boolArr==nil) { NSMutableArray *arr =

iOS开发>学无止境 - Cell 里的视图控制器

在每个 iOS 开发者的生涯中,总有一些时候想把一个视图控制器放到一个 tableView 的 cell 中.因为这是一个有用的工具去处理我在视图控制器中的各种复杂视图及繁琐操作,而且很容易想象的一种情况是你想要将一些视图堆在另一些视图上面.另一个常见的应用场景是将 collectionView 放在 cell 里.理想情况下里面的 collectionView 拥有它自己的控制器,这样外面的 tableView 控制器不会受到关联视图和每个 collection view cell 数据的影响

iOS:一个Cell中设置另外一个Cell中的button

场景: 子类化Cell中有button,拥有选中式样,点击第一个Cell中的button后,Cell一中的button获得选中式样,但是当点击Cell二中的button时,Cell一中的button选中式样依然存在,即同时存在两个选中的button. 解决方法: 在子类化的Cell中,定义一个 static UIButton *selectedButton; 必须是 static 静态变量. 然后在点击方法中, - (void)headerButtonClickAction:(UIButton

获取cell中的button在整个屏幕上的位置

编写cell中得button点击事件 - (IBAction)showButtonClick:(id)sender { UIButton *button = (UIButton *)sender; UIWindow* window = [UIApplication sharedApplication].keyWindow; CGRect rect1 = [button convertRect:button.frame fromView:self.contentView];     //获取but