2013-03-02 76 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