iOS 获取自定义cell上按钮所对应cell的indexPath.row的方法

  在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
}

时间: 2024-10-05 23:47:57

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

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

IOS开发中UIBarButtonItem上按钮切换或隐藏案例实现案例是本文要介绍的内容,这个代码例子的背景是:导航条右侧有个 edit button,左侧是 back button 和 add button. AD:[线下活动]三大新锐HTML 5企业汇聚51CTO—大话移动前端技术 IOS开发中UIBarButtonItem上按钮切换或隐藏案例实现案例是本文要介绍的内容,这个代码例子的背景是:导航条右侧有个 edit button,左侧是 back button 和 add button.代

获取cell上按钮事件

原由:点击cell上的按钮,无法获取button对应的cell位置 //获取按钮上层控件,也就是cell本身 AccountCell *cell= (AccountCell *)[按钮名称 superview]; //获取该cell本身的位置 NSIndexPath *indexPath=[self.collectionView indexPathForCell:cell];

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

一. 目的: 实现UITableViewCell上按钮点击事件可以进行页面跳转. 二. 实现方法: 1. 用协议的方式的实现. 2. 需要自定义UITableViewCell. 三. 代码部分. cell.h中 #import <UIKit/UIKit.h> @protocol SevenProtocolDelegate <NSObject> - (void)sevenProrocolMethod:(UIViewController *)viewController and:(NS

iOS 使用自定义手势屏蔽按钮解决方法/UITapGestureRecognizer屏蔽Button

有时候需要在scrollview上面添加手势,让其获取点击后,收起键盘,就用到添加手势.可是会出现一些后续问题,比如会拦截scrollview上面的其他一切可点击的控件,你可能会去设置手势控件的一些属性.但仅仅设置 UIGestureRecognizer 的属性是不够的,比如 : screenTouch.numberOfTapsRequired =1; [screenTouchsetCancelsTouchesInView:NO]; 这种有时候会拦截UITextField上面的清空text的按钮

iOS 获取AppStore线上应用信息

RT:可以获取版本号等信息 http://itunes.apple.com/lookup?id=409789998 { "results" : [ { "artworkUrl100" : "http:\/\/a5.mzstatic.com\/us\/r30\/Purple3\/v4\/f3\/37\/e6\/f337e6de-71f1-cdeb-6027-0350c1f23386\/icon.512x512-75.png", "curr

iOS 获取Interface Builder上的子控制器的两种方式

原创Blog,转载请注明出处 blog.csdn.net/hello_hwc 准备工作 Storyboard上为一个ViewController拖拽两个子控制器,并且设置两个segue的identifier分别为childvc1,childvc2 效果 方式一,根据segue的identifier来判断获得 #import "ViewController.h" #import "ChildViewController1.h" #import "ChildV

cell上按钮的多选问题

#pragma mark - 点击选择按钮-(void)selectedButtonClicked:(UIButton * )sender{ if (tempButton == nil){ sender.selected = YES; tempButton = sender; } else if (tempButton !=nil && tempButton == sender){ tempButton.selected = NO; tempButton =nil; } else if (

IOS开发系列--TableView、多个TableViewCell、自定义Cell、Cell上画画(故事板+代码方式),ios7tableview索引

在此之前,我们已经创建了一个通过简单的表视图应用程序并显示预定义的图像.在本教程中,我们将继续努力,使应用程序变得更好,: >不同的行显示不同的图像 - 上个教程,我们的所有行显示相同的缩略图.那么不同的食物显示不同的图片不是更好么? >自定义视图单元-我们将展示我们自己的视图来替代默认表单元格样式 显示不同缩略图 在我们更改代码之前,让我们回顾显示缩略图的代码. 最后,我们增加了一个行代码指示UITableView每一行显示"creme_brelee.jpg"这张图片.显

IOS 获取,如电量,CPU,型号等

IOS 获取,如电量,CPU,型号等 电池信息可以从UIDevice batteryLevel得到,但是只能精确到0.05.- (NSDictionary*)batteryLevel{CFTypeRef blob = IOPSCopyPowerSourcesInfo();        CFArrayRef sources = IOPSCopyPowerSourcesList(blob);                CFDictionaryRef pSource = NULL;