首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UITableView Cell - 从按钮获取IndexPath.row?

UITableView是iOS开发中常用的列表视图控件,用于展示大量数据。UITableViewCell是UITableView中的单元格,用于展示每一行的数据。

要从按钮获取UITableViewCell的IndexPath.row,可以通过以下步骤实现:

  1. 在UITableView的委托方法cellForRowAt中,为每个UITableViewCell的按钮添加一个点击事件的监听器。
  2. 在按钮的点击事件方法中,获取按钮所在的UITableViewCell,可以使用按钮的superview属性来获取其父视图,即UITableViewCell。
  3. 通过UITableView的方法indexPath(for:),传入UITableViewCell获取其对应的IndexPath。
  4. 最后,通过IndexPath的row属性获取所需的行号。

以下是一个示例代码:

代码语言:swift
复制
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! CustomTableViewCell
    cell.button.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside)
    return cell
}

@objc func buttonTapped(_ sender: UIButton) {
    guard let cell = sender.superview as? UITableViewCell else {
        return
    }
    
    guard let tableView = cell.superview as? UITableView else {
        return
    }
    
    guard let indexPath = tableView.indexPath(for: cell) else {
        return
    }
    
    let row = indexPath.row
    // 使用获取到的row进行后续操作
}

在这个示例中,我们假设自定义的UITableViewCell类名为CustomTableViewCell,其中包含一个名为button的按钮。在cellForRowAt方法中,为每个按钮添加了一个点击事件的监听器,当按钮被点击时,会调用buttonTapped方法。

buttonTapped方法中,我们首先通过按钮的superview属性获取到其父视图,即UITableViewCell。然后通过UITableViewCell的superview属性获取到其所在的UITableView。最后,通过UITableView的indexPath(for:)方法获取到UITableViewCell对应的IndexPath,进而获取到所需的行号。

这样,我们就可以从按钮获取到UITableViewCell的IndexPath.row了。

推荐的腾讯云相关产品:腾讯云移动开发套件(https://cloud.tencent.com/product/mks

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS UITableView获取特定位置的cell

一、tableView双级联动 [菜单栏联动.gif] [UITableView双级联动.gif] 以上两种效果比较类似,实现的关键在于都是需要获得在滑动过程中滑动到tableView顶部的cell的indexPath...rightTableView indexPathForCell:array.firstObject]; NSLog(@"滑到了第 %ld 组 %ld个",indexPath.section, indexPath.row...indexPathForRowAtPoint:scrollView.contentOffset]; NSLog(@"滑到了第 %ld 组 %ld个",indexPath.section, indexPath.row...UITableView中心的cell [获取UITableView中心线cell.gif] 获取处于tableView中间cell的效果,用上述方案一比较麻烦:要考虑可见cell 的奇、偶个数问题,还有...代码如下: - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ //获取处于UITableView中心的cell //系统方法返回处于

4.8K80
  • iOS UITableView获取特定位置的cell

    一、tableView双级联动 菜单栏联动.gif UITableView双级联动.gif 以上两种效果比较类似,实现的关键在于都是需要获得在滑动过程中滑动到tableView顶部的cell的indexPath...rightTableView indexPathForCell:array.firstObject]; NSLog(@"滑到了第 %ld 组 %ld个",indexPath.section, indexPath.row...indexPathForRowAtPoint:scrollView.contentOffset]; NSLog(@"滑到了第 %ld 组 %ld个",indexPath.section, indexPath.row...UITableView中心的cell 获取UITableView中心线cell.gif 获取处于tableView中间cell的效果,用上述方案一比较麻烦:要考虑可见cell 的奇、偶个数问题,还有cell...代码如下: - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ //获取处于UITableView中心的cell //系统方法返回处于

    1.3K30

    iOS开发中使用UITableView提高用户体验

    上拉加载更多 2.当每个Cell上有多张图片,且图片质量较大的时候,用户滑到下一页但页面上的图片还没有显示出来。 需求: 优化UITableView,提高用于体验。...思路: 1.上拉UITableView的时候,让MJRefresh提前去加载下一页的数据。 2.上拉UITableView的时候,提前下载下一屏上的图片。...* dic = self.dataArr[indexPath.row]; NSString * picStr = dic[@"pic"]; [cell.picView sd_setImageWithURL...; } 具体实现: 1.在cellForRowAtIndexPath:方法中获取每个cell的行数,当数据源中未展示的数据不够下一屏的数据的时候就去利用MJRefresh加载下一页的数据。...在cellForRowAtIndexPath:方法中在利用当前Cell上的UIImageView去下载图片的同时利用picView去下载数据源中还未展示的cell上的UIImageView上要显示的图片

    98330

    底牌项目中的选择牌谱上传功能--深刻理解UITableView复用

    此界面的布局: 此界面由UITableView构成,根据日期的不同设置单元格,单元格内是一张张图片,在每张图片上添加了一个按钮用于选择图片。...问题: 在选中一张图片后会将该图片存储到一个数组中以便上传,可当再次点击按钮取消选中图片时却不知道该如何将该图片数组中删除。...解决: 在Cell中制定协议设置代理,在选中图片的按钮点击事件中如果代理响应了协议中的方法则让代理执行该方法。关键:在该方法中要将图片的信息传递过去。...cell.delegate = self;     cell.model = self.dataSource[indexPath.row]; if (self.present.length >...= indexPath.row; return cell; } cell.selectedPokerId = self.idArr;将选中图片的ID传递到了Cell中。

    1.1K10
    领券