如何使用viewWithTag获取按钮引用

时间:2014-08-19 08:35:58

标签: ios objective-c uitableview

我创建了一个dynamic prototype cell in storyboard,此单元格包含UILabel两个 UIButtons

行数取决于我从Web服务获取的数据。

我不想将这个单元格子类化。

我使用此代码[cell viewWithTag:0]在单元格内获取控件引用。

对于点击事件,我使用此代码

[cell.button addTarget:self action:@selector(myMethod:) forControlEvents:UIControlEventTouchUpInside];

问题是如何检测点击了哪一行按钮?

2 个答案:

答案 0 :(得分:0)

将此内容写入cellforRowAtIndexPath

UIButton *button = (UIButton *)[cell viewWithTag:100]
[button setTag:indexPath.row];

并在您的操作方法中编写

-(void)myMethod:(UIButton *)sender
{
        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[sender tag] inSection:0];
      // indexPath contains clicked row indexpath

}

答案 1 :(得分:-1)

在cellForRow方法中,您可以将标记添加到按钮中,如下所示:

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath {
       CustomCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"identif"];
       cell.button.tag = indexPath.row; // the tag of the button will be the index of the cell; 

}

建议对标签使用某种公式,例如:100 + indexPath.row,因为应用程序中的每个View标签最初都是0.

之后,在你的按钮选择器中执行以下操作:

- (void)myMethod:(id)sender {
   UIButton *button = (UIButton *)sender;
 NSLog(@"%ld",(long)buttton.tag); 
}