在UiTableView中didSelectRowAtIndexPath更新了错误的Cell

时间:2016-01-23 08:09:28

标签: ios objective-c uitableview didselectrowatindexpath

在我的TableView中,didSelectRowAtIndexPath只更新每个单元格中表格的最后一个可见单元格。

以下是示例代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([tableView isEqual:subcategoryTV])
    {
         selCell=(MDTableViewCell *)[subcategoryTV cellForRowAtIndexPath:indexPath ];

         if ([checkButton.titleLabel.text isEqualToString:@"✓"])
         {
            checkButton.backgroundColor=[UIColor clearColor] ;
            [checkButton setTitle:resetTitle forState:UIControlStateNormal];
            [checkButton setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];
            checkButton.layer.borderColor = [UIColor lightGrayColor].CGColor;
        }
        else
        {
            resetTitle=checkButton.titleLabel.text;
            NSLog(@"%@",resetTitle);

            checkButton.backgroundColor=[UIColor colorWithRed:1 green:0.839 blue:0.314 alpha:1] ;
            [checkButton setTitle:@"✓" forState:UIControlStateNormal];
            [checkButton.titleLabel setFont:[UIFont fontWithName:@"Futura" size:25]];
            [checkButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
            checkButton.layer.borderColor = [UIColor clearColor].CGColor; 
        }

        if (costLabel.hidden==YES) {
            costLabel.hidden=NO;
        }
        else
        {
            costLabel.hidden=YES;
        }
     }
 }

1 个答案:

答案 0 :(得分:2)

你不应该从单元格查询数据,你应该检查你的模型来决定做什么。当用户更改任何行或按钮时,您更新模型,然后使用它来更新视图。这是正确的方法。

此处的具体问题,即您的方法不好,就是您在选定的索引路径中获取单元格,然后不使用它。您应该从单元格中获取按钮和标签。