我有一个表视图,每行有两个单选按钮,用于选择需要计算段号和行号的单选按钮,在当前逻辑中最多可以计算第9行其工作正常但在第9行之后它不是更改单选按钮图像。
这是我的逻辑实现代码。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
cell._option1Btn.tag = ((indexPath.section+1)*10)+(indexPath.row+1);
cell._option2Btn.tag = ((indexPath.section+1)*10)+(indexPath.row+1);
return cell;
}
-(void) respondToRightBtnAction:(UIButton*) sender {
if(debug)NSLog(@"In the Right button clicked method");
if(debug)NSLog(@"left button in %d row is YES", sender.tag);
int section = (sender.tag/10 -1);
int row = (sender.tag%10 -1);
}
答案 0 :(得分:2)
由于您设置代码的方式,它无效。这是一个例子。
indexPath.section = 1,indexPath.row = 1 tag = 22
indexPath.section = 0,indexPath.row = 11 tag = 22
更好的方法是抓住单元格本身,您可以从发送方变量中获取单元格。
-(void) respondToRightBtnAction:(UIButton*) sender {
UITableViewCell *cell = sender.superview.superview //actual code will depend on the hierarchy. This assumes that the button is in the contentview of the cell
NSIndexPath *path = [myTableView indexPathForCell:cell];
//now you can do whatever you need to do with the indexpath.
}
答案 1 :(得分:0)
我认为问题可能在于:
{section = 0,row = 10} (tag == 21)以及 {section = 1,row = 0} (tag == 21)。尝试更改生成标记的方法。
例如,
cell._option1Btn.tag = ((indexPath.section+1)*1000)+(indexPath.row+1);
cell._option2Btn.tag = ((indexPath.section+1)*1000)+(indexPath.row+1);
系数( 1000 )应小于部分
中的最大行数