在UITableView或UICollectionView的自定义cell中创建一button,在点击该按钮时知道该按钮所在的cell在UITableView或UICollectionView中的行数。就是cell的 indexPath.row,下面以UITableView为例:

有两种方法:
-(IBAction):(id)sender
{

1. 第一种方法,这个方便一点点,不用设置tag。

  
NSLog(@"MyRow:%d",[self.table
indexPathForCell:((TableViewCell*)[[sender  
superview]superview])].row);
 2. 第二种方法,这个需要加载cell时设置tag.不过也很方便。
   
NSLog(@"MyRow:%d",((TableViewCell*)[[sender
superview]superview]).tag);
   
}
   
在UITableViewDataSource的协议方法里需要添加的代码:
-(UITableViewCell *)tableView:(UITableView *)tableView
       
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
   
//删除cell.contentView中所有内容,避免以下建立新的重复
    int i =
[[cell.contentView subviews] count] - 1;
    for(;i
>= 0 ; i--)
    {
        
[[[cell.contentView subviews] objectAtIndex:i]
removeFromSuperview];
    }

//添加button
    UIButton
*but = [UIButton buttonWithType:UIButtonTypeCustom];
    [but
setBackgroundImage:[UIImage imageNamed:@"delete.png"]
forState:UIControlStateNormal];
    [but
setFrame:CGRectMake(280, 10, 30, 30)];
    [but
setAlpha:0.8];
    [but
addTarget:self action:@selector(del:)
forControlEvents:UIControlEventTouchUpInside];
   
[cell.contentView addSubview:but];
    //设置Tag为cell
对应的indexPath row
    for(id view
in subviews)
    {
        
if([view isKindOfClass:[UIButton class]])
        
{
            
[view setTag:[indexPath row]];
            
//[cell.contentView bringSubviewToFront:view];
        
}
    }
}
//Button事件
-(void)del:(id)sender
{
   
for(UITableViewCell *cell in visiblecells)
    {
       
if(cell.tag == button.tag)
    {
   
//button.tag就是对应的[indexPath.row

iOS 获取自定义cell上按钮所对应cell的indexPath.row的方法的更多相关文章

  1. IOS开发中UIBarButtonItem上按钮切换或隐藏实现案例

    IOS开发中UIBarButtonItem上按钮切换或隐藏案例实现案例是本文要介绍的内容,这个代码例子的背景是:导航条右侧有个 edit button,左侧是 back button 和 add bu ...

  2. 获取cell上按钮事件

    原由:点击cell上的按钮,无法获取button对应的cell位置 //获取按钮上层控件,也就是cell本身 AccountCell *cell= (AccountCell *)[按钮名称 super ...

  3. iOS-UITableView-处理cell上按钮事件(弹出警示框,页面跳转等)

    一. 目的: 实现UITableViewCell上按钮点击事件可以进行页面跳转. 二. 实现方法: 1. 用协议的方式的实现. 2. 需要自定义UITableViewCell. 三. 代码部分. ce ...

  4. iOS: 获取UITableViewCell上添加的子控件对应的cell

    一.简单介绍 UITableViewCell是UITableView的核心部分,我们在开发中因为功能的扩展经常需要自定义,以便在其上面添加子控件,例如button.label等.添加后获取这些子控件的 ...

  5. 制作自定义背景Button按钮、自定义形状Button的全攻略(转)

    在Android开发应用中,默认的Button是由系统渲染和管理大小的.而我们看到的成功的移动应用,都是有着酷炫的外观和使用体验的.因此,我们在开发产品的时候,需要对默认按钮进行美化.在本篇里,笔者结 ...

  6. UITbaleView上按钮的单选

    设置Id属性,标记是哪个cell @property (nonatomic,assign)NSInteger Id; 设置一个普通状态和选中状态图片不同的按钮 _choose = [[UIButton ...

  7. day05 Spring中自定义注解的用处-之获取自定义的Servie

    PS: 在RPC远程调用中,想要获取自定义的service的方法,就得自定义标签遍历拿到方法 PS:在spring中,两个最核心的 概念是aop和ioc,aop其实就是动态代理. ioc 就是解决对象 ...

  8. iOS 如何自定义UISearchBar 中textField的高度

    iOS 如何自定义UISearchBar 中textField的高度 只需设置下边的方法就可以 [_searchBar setSearchFieldBackgroundImage:[UIImage i ...

  9. iOS 点击cell上的按钮获取行数

    -(void)btnClick:(UIButton *)button{ UITableViewCell *cell = (UITableViewCell *)[[button superview] s ...

随机推荐

  1. html中音频和视频

    HTML5音频中的新元素标签 src:音频文件路径. autobuffer:设置是否在页面加载时自动缓冲音频. autoplay:设置音频是否自动播放. loop:设置音频是否要循环播放. contr ...

  2. Sqlserver面试题

    1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name   kecheng   fenshu 张三     语文       81张三     数学       75李四     语文   ...

  3. The NPF driver isn't running

    转自:http://blog.csdn.net/zhangkaihang/article/details/7470239 今天安装Wireshark软件时出现了如下图所示的错误,就搜索了一下解决方法, ...

  4. uva 11427

    题目大意:每天晚上你都玩纸牌,如果第一次赢了就高高兴兴地去睡觉:如果输了就接着玩,假设每盘游戏获胜的的概率都是p,且各盘游戏相互独立.你是一个固执的完美主义者,因此会一直玩到当晚获胜局数的比例严格大于 ...

  5. jsp和servlet之间传数据

    一.jsp与java文件传递数据可以使用Servlet类来传递,jsp将数据存入到request对象中,Servlet类获取这个request对象,并将数据取出. 示例代码如下: JSP代码: < ...

  6. Bzoj1313 [HAOI2008]下落的圆盘

    有 n 个圆盘从天而降,后面落下的可以盖住前面的.最后按掉下的顺序,在平面上依次测得每个圆盘的圆心和半径,问下落完成后从上往下看,整个图形的周长是多少,即你可以看到的圆盘的轮廓的圆盘的轮廓总长.例如下 ...

  7. [bzoj1798][Ahoi2009]Seq——线段树+多重标记下传

    题意 请你写一个数据结构,支持: 子序列同加 子序列同乘 统计子序列和 题目 线段树裸题,但对于我这种初学者还是非常难写. 我们维护两个标记,一个是在这个节点上作过的所有乘法操作,一个是加法操作,始终 ...

  8. linux驱动基础系列--linux spi驱动框架分析(续)

    前言 这篇文章是对linux驱动基础系列--linux spi驱动框架分析的补充,主要是添加了最新的linux内核里设备树相关内容. spi设备树相关信息 如之前的文章里所述,控制器的device和s ...

  9. golang命令行参数解析

    package main import ( "fmt" "os" ) func main(){ s:= os.Args fmt.Println(s) } 直接执 ...

  10. require.js使用baseUrl + paths导入文件配置的3种方法

    //main.js requirejs.config({ baseUrl: 'lib/js',//参照于引入这个js文件的index.html页面的相对路径,因为此时mian.js文件已经导入到了in ...