2012-10-12 51 views
0

大家好我正在實現一個聊天Messenger。我面臨着一個奇怪的情況。我有一個自定義的tableview單元格,當我正常滾動時,它工作得非常好。但是,如果我像一個瘋狂的男人滾動非常快,用戶的圖像混合。我不能把數字放在什麼可以是任何幫助夥伴和thx的原因提前在自定義中出現錯誤的值uitableViewCell

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UIColor *rung; 
    if (indexPath.row%2 == 0) { 
     // 0.662745 0.662745 0.662745 
     rung=[UIColor colorWithRed:0.802745 green:0.802745 blue:0.802745 alpha:1]; 
     color=NO; 
    } 
    else { 
     // 0.972549 0.972549 1 
    //0.411765 0.411765 0.411765 
     rung=[UIColor colorWithRed:0.862745 green:0.862745 blue:0.862745 alpha:1]; 
     color=YES; 
    } 



    //static NSString *MyIdentifier = @"Identifier"; 
    NSLog(@"====IndexPath is %d",indexPath.row); 

    ChatSlideDC *slide = [[HMMainManager getSharedInstance].currentMeeting.resumedChatMessages objectAtIndex:indexPath.section]; 

    ChatMessageDC *message; 

    message = [[slide ChatMessageArray]objectAtIndex:indexPath.row]; 
    NSLog(@"====Message Type is %@",message.MessageType); 
    NSLog(@"%@",message.Message); 
    if ([message.MessageType isEqualToString: @"0"] || [message.MessageType isEqualToString:@"1"]) { 
     ChatCustomCell * cell = (ChatCustomCell *) [tableView dequeueReusableCellWithIdentifier:@"ChatCustomCell"]; 

     if (cell == nil) { 

      NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ChatCustomCell" owner:self options:nil]; 
      cell = (ChatCustomCell*)[nib objectAtIndex:0]; 
      } 
    // cell.backgroundImage.backgroundColor=rung; 
     UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; 
     view.backgroundColor = rung; 
     view.opaque = YES; 
     cell.backgroundView = view; 
     [view release]; 
     //cell.backgroundColor=rung; 
     cell.lblSaid.text [email protected]"Said"; 
     cell.lblName.text =message.SenderName; 
     cell.lblText.text =message.Message; 


     NSLog(@"manager strID: %@ chat cell attendeeID %@",[HMMainManager getSharedInstance].currentMeeting.strAttendeeID,message.AttendeeID); 
     NSLog(@"%@ == %@",message.AttendeeID,[HMMainManager getSharedInstance].currentMeeting.strAttendeeID); 
     if ([message.AttendeeID isEqualToString:[HMMainManager getSharedInstance].currentMeeting.strAttendeeID]) { 
      cell.imgThumbUserPic.image = [MainManager getSharedInstance].userManager.userImage; 
     } 

     cell.selectionStyle = UITableViewCellEditingStyleNone; 
    //  [message release]; 
     return cell; 
    } 
    if ([message.MessageType isEqualToString:@"2"] || [message.MessageType isEqualToString:@"3"]) { 
     if ([message.MessageType isEqualToString:@"3"] || (message.question && [message.question length]>0)) { 
      //show asnwer cell 
      AnswerCustomCell * cell = (AnswerCustomCell *) [tableView dequeueReusableCellWithIdentifier:@"AnswerCustomCell"]; 

      if (cell == nil) 
      {    
       NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"AnswerCustomCell" owner:self options:nil]; 
       cell = (AnswerCustomCell*)[nib objectAtIndex:0]; 
      } 
      UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; 
      view.backgroundColor = rung; 
      view.opaque = YES; 
      cell.backgroundView = view; 
      [view release]; 
      //answer here goes 
      cell.answerdBy.text = message.SenderName; 
      cell.answerText.text = message.Message; 
      [cell.answerText flashScrollIndicators]; 

      //question 
      cell.questionedBy.text = message.QuestionBy; 
      cell.questionText.text = message.question; 
      [cell.questionText flashScrollIndicators]; 

      NSLog(@"%@",message.MessageId); 

      NSLog(@"manager strID: %@ ans cell attendeeID %@",[HMMainManager getSharedInstance].currentMeeting.strAttendeeID,message.AttendeeID); 


      if ([message.AttendeeID isEqualToString:[HMMainManager getSharedInstance].currentMeeting.strAttendeeID]) { 
      //  if ([message.SenderName isEqualToString:compName]) { 



       NSLog(@"----------:: %@ == %@ and message:%@",message.AttendeeID ,[HMMainManager getSharedInstance].currentMeeting.strAttendeeID,message.Message); 
       cell.ansPic.image = [MainManager getSharedInstance].userManager.userImage; 
      // } 
      } 
      NSLog(@"manager strID: %@ ans cell attendeeID %@",[HMMainManager getSharedInstance].currentMeeting.strAttendeeID,message.QuestionID); 

//   NSString *qustWalaID=[[HMMainManager getSharedInstance].currentMeeting.questionDict objectForKey:message.QuestionID]; 
//   NSLog(@"%@",questionDict); 
      if ([message.questionAttendeeID isEqualToString:[HMMainManager getSharedInstance].currentMeeting.strAttendeeID]) 
      { 
     //  if ([message.QuestionBy isEqualToString:compName]) { 

       NSLog(@"------------:: %@ == %@ and message:%@",message.questionAttendeeID ,[HMMainManager getSharedInstance].currentMeeting.strAttendeeID,message.Message); 

       cell.quePic.image = [MainManager getSharedInstance].userManager.userImage; 
      // } 
      } 
      // tempChatMessageDC=message; 
      // tempAnswerCustomCell=cell; 
    //  [message release]; 
      return cell; 
     } 
     else { 
      //show question cell 

      QuestionCustomCell * cell = (QuestionCustomCell *) [tableView dequeueReusableCellWithIdentifier:@"QuestionCustomCell"]; 

      if (cell == nil) { 
       NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"QuestionCustomCell" owner:self options:nil]; 
       cell = (QuestionCustomCell*)[nib objectAtIndex:0]; 
      } 
      UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; 
      view.backgroundColor = rung; 
      view.opaque = YES; 
      cell.backgroundView = view; 
      [view release]; 
      cell.lblSaid.text [email protected]"Asked"; 
      cell.lblName.text =message.SenderName; 

      NSLog(@"Question is %@", message.question); 

      cell.lblText.text =message.Message; 
      [cell.lblText flashScrollIndicators]; 
//   cell.lblAnswerQuestion.hidden = NO; 
      if (!message.answered) { 
       cell.lblAnswerQuestion.hidden = NO; 
       cell.userInteractionEnabled = YES; 
      }else { 
       cell.lblAnswerQuestion.hidden = YES; 
       cell.userInteractionEnabled = NO; 
      } 

//   cell.userInteractionEnabled = YES; 
      [[HMMainManager getSharedInstance].currentMeeting.questionDict setObject:message.AttendeeID forKey:message.MessageId]; 
      NSMutableDictionary *tmpDoct=[HMMainManager getSharedInstance].currentMeeting.questionDict ; 
    //  [questionDict setObject:message.AttendeeID forKey:message.MessageId]; 
      NSLog(@"%@",tmpDoct); 
      NSLog(@"manager strID: %@ ques cell attendeeID %@",[HMMainManager getSharedInstance].currentMeeting.strAttendeeID,message.AttendeeID); 

      if ([message.AttendeeID isEqualToString:[HMMainManager getSharedInstance].currentMeeting.strAttendeeID]) { 
       cell.imgThumbUserPic.image = [MainManager getSharedInstance].userManager.userImage; 
      } 

      cell.tvAnswer.delegate = self; 

      NSMutableString* finalSec = [NSString stringWithFormat:@"%d",indexPath.section]; 

      for (NSInteger x=0; x<3; x++) { 

       if (finalSec.length <3) { 
        finalSec = [NSString stringWithFormat:@"0%@",finalSec]; 
       } 

      } 

      NSLog(@"%@", finalSec); 

      NSString* tag = [NSString stringWithFormat:@"%d%@",indexPath.row+1, finalSec]; 

      NSLog(@"tag value %d",[tag intValue]); 

      cell.btnAnswer.tag = [tag intValue];//indexPath.row + 1000 + indexPath.section; 
      cell.tvAnswer.tag = [tag intValue]; 
      cell.selectionStyle = UITableViewCellEditingStyleNone; 
      [cell.btnAnswer addTarget:self action:@selector(answerButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; 

    //  [message release]; 
      return cell; 

     } 

    } 
// [message release]; 
    return nil; 
} 

回答

2

您應該正確使用單元格的重用。你有代碼片段:

if ([message.AttendeeID isEqualToString:[HMMainManager getSharedInstance].currentMeeting.strAttendeeID]) { 
      cell.imgThumbUserPic.image = [MainManager getSharedInstance].userManager.userImage; 
     } 

你有沒有處理其他變種。你應該在任何情況下設置用戶圖片

if ([message.AttendeeID isEqualToString:[HMMainManager getSharedInstance].currentMeeting.strAttendeeID]) { 
      cell.imgThumbUserPic.image = [MainManager getSharedInstance].userManager.userImage; 
     } else { 
       cell.imgThumbUserPic.image = nil; //or set it with another image 
} 
+0

thx爲您的答覆,這實際上幫助我 – Azerue

+0

沒問題。很高興幫助你 – NeverBe

相關問題