2011-10-27 83 views
0

我有UItableview其中包含5个单元格和这些单元格的每个单元格代表一些分析的XML数据。当UITableview执行在视图控制器的开始,然后它显示在NSMutableArray正确的单元格中正确的数据,但现在我的问题是滚动从XML文件更新数据的新鲜数据,然后数据变得分散不同的单元格代表不同的数据。如果我解释然后..如果我解释然后..当我在UItableview中滚动时数据重叠...为什么?

第一个单元所以索引号码1,但刷新后表格单元格1显示数据单元格5或任何其他细胞,这意味着细胞实际上并不重叠,但其数据表示错误的方式..我没有找到解决方案,请任何人帮助我......

这里是我的tableview细胞的代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 


static NSString *MyIdentifier = @"MyIdentifier"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease]; 
    cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:15.0]; 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 

    UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow.png"]]; 
    cell.accessoryView = imageView; 
    cell.accessoryType = UITableViewCellSelectionStyleNone; 
    tableView.separatorColor = [UIColor clearColor]; 
    tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; 


    cellView = [[[UIView alloc] initWithFrame:CGRectMake(5,8,290, 120)] autorelease]; 
    cellView.backgroundColor = [UIColor clearColor]; 
    cellView.tag =10; 
    [cell.contentView addSubview:cellView]; 

    imgView = [[UIImageView alloc] initWithFrame:CGRectMake(2, 40, 48, 48)]; 
    imgView.image = [UIImage imageNamed:@"productbox.png"]; 
    imgView.layer.borderColor = [UIColor blackColor].CGColor; 
    imgView.layer.borderWidth = 2.0; 
    imgView.tag = 5; 
    [cellView addSubview:imgView]; 


    CGRect idLabelRect = CGRectMake(65, 0, 190, 18); 
    idLabel = [[[UILabel alloc] initWithFrame:idLabelRect] autorelease]; 
    idLabel.textAlignment = UITextAlignmentLeft; 
    idLabel.textColor = [UIColor blackColor]; 
    idLabel.font = [UIFont systemFontOfSize:12]; 
    idLabel.backgroundColor = [UIColor clearColor]; 
    idLabel.layer.borderColor = [UIColor grayColor].CGColor; 
    idLabel.tag = 0; 

    CGRect statusRect = CGRectMake(65, 22, 190, 22); 
    statusLabel = [[[UILabel alloc] initWithFrame:statusRect] autorelease]; 
    statusLabel.textAlignment = UITextAlignmentLeft; 
    statusLabel.textColor = [UIColor blackColor]; 
    statusLabel.font = [UIFont systemFontOfSize:12]; 
    statusLabel.backgroundColor = [UIColor clearColor]; 
    statusLabel.layer.borderColor = [UIColor grayColor].CGColor; 
    statusLabel.tag = 1; 

    CGRect orderDateRect = CGRectMake(65, 48, 190, 22); 
    orderDate = [[[UILabel alloc] initWithFrame:orderDateRect] autorelease]; 
    orderDate.textAlignment = UITextAlignmentLeft; 
    orderDate.textColor = [UIColor blackColor]; 
    orderDate.font = [UIFont systemFontOfSize:12]; 
    orderDate.backgroundColor = [UIColor clearColor]; 
    orderDate.layer.borderColor = [UIColor grayColor].CGColor; 
    orderDate.tag = 2; 

    CGRect byRect = CGRectMake(65, 75, 190, 22); 
    byLabel = [[[UILabel alloc] initWithFrame:byRect] autorelease]; 
    byLabel.textAlignment = UITextAlignmentLeft; 
    byLabel.textColor = [UIColor blackColor]; 
    byLabel.font = [UIFont systemFontOfSize:12]; 
    byLabel.backgroundColor = [UIColor clearColor]; 
    byLabel.layer.borderColor = [UIColor grayColor].CGColor; 
    byLabel.tag = 3; 

    CGRect totalRect = CGRectMake(65, 98, 190, 22); 
    totalLabel = [[[UILabel alloc] initWithFrame:totalRect] autorelease]; 
    totalLabel.textAlignment = UITextAlignmentLeft; 
    totalLabel.textColor = [UIColor blackColor]; 
    totalLabel.font = [UIFont systemFontOfSize:12]; 
    totalLabel.backgroundColor = [UIColor clearColor]; 
    totalLabel.layer.borderColor = [UIColor grayColor].CGColor; 
    totalLabel.tag = 4; 

    [cellView addSubview:idLabel]; 
    [cellView addSubview:statusLabel]; 
    [cellView addSubview:orderDate]; 
    [cellView addSubview:byLabel]; 
    [cellView addSubview:totalLabel]; 

} 

cellView = (UIView *)[cell.contentView viewWithTag:10]; 
imgView = (UIImageView *)[cellView viewWithTag:5]; 
idLabel = (UILabel *)[cellView viewWithTag:0]; 
statusLabel = (UILabel *)[cellView viewWithTag:1]; 
orderDate = (UILabel *)[cellView viewWithTag:2]; 
byLabel = (UILabel *)[cellView viewWithTag:3]; 
totalLabel = (UILabel *)[cellView viewWithTag:4]; 

x = [records count]; 
//NSLog(@" total number of row: %d",x); 
if(y<x){ 
    NSLog(@"%d",y); 
    //[self performSelector:@selector(tabledata:) withObject:[NSNumber numberWithInt:y] afterDelay:0.0]; 
    if(y == indexPath.section){ 
    idLabel.text = [NSString stringWithFormat:@"Order Id: %@",[[records objectAtIndex:y] objectAtIndex:0]]; 
    statusLabel.text = [NSString stringWithFormat:@"Status: %@",[[records objectAtIndex:y] objectAtIndex:1]]; 
    orderDate.text = [NSString stringWithFormat:@"Date: %@",[[records objectAtIndex:y] objectAtIndex:2]]; 
    byLabel.text = [NSString stringWithFormat:@"By: %@",[[records objectAtIndex:y] objectAtIndex:3]]; 
    totalLabel.text = [NSString stringWithFormat:@"Total: %@",[[records objectAtIndex:y] objectAtIndex:4]]; 
    y++; 

    } 
} 

代码刷新表...

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { 
if (isLoading) return; 
isDragging = YES; 
} 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
if (isLoading) { 
    // Update the content inset, good for section headers 
    if (scrollView.contentOffset.y > 0){ 
     NSLog(@"scrollView.contentOffset.y 1= %d",scrollView.contentOffset.y); 
     tableview.contentInset = UIEdgeInsetsZero; 
    } 
    else if (scrollView.contentOffset.y >= -REFRESH_HEADER_HEIGHT){ 
     NSLog(@"scrollView.contentOffset.y 2= %d",scrollView.contentOffset.y ); 
     tableview.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0); 
    } 
} else if (isDragging && scrollView.contentOffset.y < 0) { 
    // Update the arrow direction and label 
    [UIView beginAnimations:nil context:NULL]; 
    if (scrollView.contentOffset.y < -REFRESH_HEADER_HEIGHT) { 
     // User is scrolling above the header 
     NSLog(@"scrollView.contentOffset.y 3= %d",scrollView.contentOffset.y  ); 
     refreshLabel.text = self.textRelease; 
     [refreshArrow layer].transform = CATransform3DMakeRotation(M_PI, 0, 0, 1); 
    } else { // User is scrolling somewhere within the header 
     refreshLabel.text = self.textPull; 
     [refreshArrow layer].transform = CATransform3DMakeRotation(M_PI * 2, 0, 0, 1); 
    } 
    [UIView commitAnimations]; 
    } 
} 

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { 
    if (isLoading) return; 
    isDragging = NO; 
    if (scrollView.contentOffset.y <= -REFRESH_HEADER_HEIGHT) { 
    // Released above the header 
    [self startLoading]; 
    } 
} 


return cell; 
} 

有任何进一步的问题,那么请告诉me..i非常早期需要这种解决方案。

由于提前

+0

没有人帮助我?? !!!!!!! – Emon

回答

2

尝试改变 “MyIdentifier” 到 “无” 的UITableViewCell *细胞= [的tableView dequeueReusableCellWithIdentifier:无];

希望这项工作!和平

+0

谢谢。你做了一个伟大的工作的人...再次感谢.... – Emon

+0

伟大的答案!!!! – Mann

+0

任何人都可以与为什么发生这种事情的根本原因钟声?为什么'nil'修复它? – cksubs

相关问题