与index.section和index.row的iphone表视图问题

时间:2011-09-08 07:14:45

标签: iphone

我有一个表视图,每行有两个单选按钮,用于选择需要计算段号和行号的单选按钮,在当前逻辑中最多可以计算第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);

}

2 个答案:

答案 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 )应小于部分

中的最大行数