我创建了一个dynamic prototype cell in storyboard
,此单元格包含UILabel
和两个 UIButtons
。
行数取决于我从Web服务获取的数据。
我不想将这个单元格子类化。
我使用此代码[cell viewWithTag:0]
在单元格内获取控件引用。
对于点击事件,我使用此代码
[cell.button addTarget:self action:@selector(myMethod:) forControlEvents:UIControlEventTouchUpInside];
问题是如何检测点击了哪一行按钮?
答案 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);
}