2013-03-02 73 views
0

我的表格视图中有两个部分,一个用于测试状态,另一个用于结果。iOS 6表滚动导致问题

第一部分的第三行在测试完成后发生变化。在测试过程中,它会记录完成的百分比,并在其更改后显示是否检测到任何问题。

文本的颜色也改变,表示不好/好/好。对于这个特定的测试,大约有20行结果。

问题是在这20个结果中,两个单元格被当作第一个单元格中的第三个单元格处理并变成红色。

现在我假设当我滚动表重新加载,这必须意味着我的代码是不正确的,只有通过一个测试结果显示。任何帮助都会很棒。我怀疑它是下面的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 
    UITableViewCell *serverLoc = [tableView dequeueReusableCellWithIdentifier:@"speedCell"]; 
    // UITableViewCell *switchCell = [tableView dequeueReusableCellWithIdentifier:@"switchCell"]; 

    switch (indexPath.section) { 
     case 0: 
      switch (indexPath.row) { 
       case 0: 
        serverLoc.textLabel.text = @"Test location:"; 
        serverLoc.detailTextLabel.text = testLocation; 
        serverLoc.selectionStyle = UITableViewCellSelectionStyleNone; 
        serverLoc.userInteractionEnabled = NO; 
        break; 
       case 1: 
        serverLoc.textLabel.text = @"Status:"; 
        serverLoc.detailTextLabel.text = statusText; 
        serverLoc.selectionStyle = UITableViewCellSelectionStyleNone; 
        serverLoc.userInteractionEnabled = NO; 
        break; 
       case 2: 
        if ([TestEnded isEqualToString:@"no"]) { 
         serverLoc.textLabel.text = @"Progress"; 
         serverLoc.selectionStyle = UITableViewCellSelectionStyleNone; 
         serverLoc.userInteractionEnabled = NO; 
         serverLoc.detailTextLabel.text = [NSString stringWithFormat:@"%ld%%", (long)progressInt]; 
         break; 
        } 
        else { 

         serverLoc.selectionStyle = UITableViewCellSelectionStyleBlue; 
         serverLoc.userInteractionEnabled = YES; 
         serverLoc.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
         serverLoc.textLabel.text = @"Problems Detected:"; 
         serverLoc.detailTextLabel.text = [NSString stringWithFormat:@"%ld", (long)problemsDetected]; 

         if (problemsDetected == 0) { 
          serverLoc.textLabel.textColor = [UIColor colorWithRed:0.0/255 green:102.0/255 blue:51.0/255 alpha:1.0]; 
          serverLoc.detailTextLabel.textColor = [UIColor colorWithRed:0.0/255 green:102.0/255 blue:51.0/255 alpha:1.0]; 
         } 
         else if (problemsDetected == 1) { 
          serverLoc.textLabel.textColor = [UIColor colorWithRed:226.0/255 green:232.0/255 blue:52.0/255 alpha:1.0]; 
          serverLoc.detailTextLabel.textColor = [UIColor colorWithRed:226.0/255 green:232.0/255 blue:52.0/255 alpha:1.0]; 
         } 
         else { 
          serverLoc.textLabel.textColor = [UIColor redColor]; 
          serverLoc.detailTextLabel.textColor = [UIColor redColor]; 
         } 

        } 
        break;  
      } 
      break; 

我不确定它是否会工作,当我第一次实现它。它“做到了”,但显然我不需要滚动足以揭示错误。

预先感谢任何指针

回答

1

这里的代码看起来不错......这听起来像你的表被重用小区设立了这个特殊的路径,但没有返回值重用细胞之前为默认值。 (例如,在部分== 1的情况下:severLoc.textLabel.textColor = [UIColor blackColor];)如果情况0,0和0,1在抓取重用单元格时以0,2单元结束,也会出现这种情况。

+0

谢谢@Bryce。我在案例:1中添加了更多代码来定义解决问题的颜色等 – 2013-03-04 20:53:18