iPhone:如何从视图控制器中获取自定义单元格的按钮操作?

Posted

技术标签:

【中文标题】iPhone:如何从视图控制器中获取自定义单元格的按钮操作?【英文标题】:iPhone:How to get the button action of a customcell from the viewcontroller? 【发布时间】:2011-08-22 11:27:54 【问题描述】:

我使用 UITableview,使用 IB 在自定义单元格和一些标签中定义了一个 UIButton,自定义单元格子类已经定义了按钮的 IBAction 和必要的 IBOutlets,但我想在tableview 控制器它自己,但不在自定义单元子类中。

我该怎么做?我还需要获取准确点击了哪一行的按钮,以便显示与其相关的内容。

【问题讨论】:

【参考方案1】:

我通过将它添加到我的控制器中解决了问题;

[cell.expButton setTag:indexPath.row];
UIButton *button = (UIButton *)[cell expButton];
[button addTarget:self action:@selector(buttonTapped:event:) forControlEvents:UIControlEventTouchUpInside];

【讨论】:

【参考方案2】:

为了可点击事件(子View上的触摸效果)的需要,我通常是这样做的:

-(void)viewDidLoad
    self.tableView.delaysContentTouches = NO;



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

 // This will do the touch down effect on the subView of your UIButton
  for (id obj in cell.subviews)
    
        if ([NSStringFromClass([obj class]) isEqualToString:@"UITableViewCellScrollView"])
        
            UIScrollView *scroll = (UIScrollView *) obj;
            scroll.delaysContentTouches = NO;
            break;
        
    

   // I need to get which row's button is exactly clicked so I will show the content relavant to it.- here it is 
   UIButton *btn = (UIButton*)[cell viewWithTag:200];
   // btn = cell.myButton; If you are connected with the IBOutlet
   [btn setTag:200 + indexPath.row];
   [self.btnPlay addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside];



-(void)btnAction: (id)sender
    UIButton *btn = (UIButton *)sender;
       NSLog(@"Selected subView of the  Row is  %d th tag", btn.tag-200);

   // You can get the UITableViewCell using the tag property
    selectedIP = [NSIndexPath indexPathForRow:btn.tag - 200 inSection:1;
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:selectedIP];

  // Do the relevant code 

【讨论】:

【参考方案3】:

你想要的方式是正确的(MVC 必须如何编码干净) - 太漂亮了!

为了提高效率,您必须使用委托 - 这是最好的方法! 这是一种如何做到这一点的方法(例如快速)。 https://***.com/a/29920564/1415713

【讨论】:

以上是关于iPhone:如何从视图控制器中获取自定义单元格的按钮操作?的主要内容,如果未能解决你的问题,请参考以下文章

根据图像高度在集合视图自定义布局中获取单元格的高度

如何在自定义单元格的 initWithStyle: 方法中获取 UITableView 的宽高?

如何从自定义表格视图单元类中获取对表格视图控制器的引用

如何动态更改自定义单元格的表格视图单元格的高度?

如何从弹出视图控制器获取数据到自定义表格视图单元格?

故事板中的自定义单元格行高度设置没有响应