2011-10-27 12 views
0

私はUItableviewを持っています。5セルを含むすべてのセルとこれらのセルは、解析されたxmlデータを表しています。UITableviewはビューコントローラの開始時に実行され、NSMutableArrayから正しいセルに正しいデータを表示します。 xmlファイルからデータを更新するための新鮮なデータに、異なるデータを表す別のセルにデータが散在していきます。UItableviewでスクロールしているときにデータが重複しています...なぜですか?

最初のセルはインデックス番号1ですが、データセル5または任意の他のセルは、実際には重複していませんが、そのデータは間違った方法で表現されています。私は解決策を見つけられないので誰でも助けてください....

ここ

- (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は非常に早く、このソリューションを必要とするが教えてくださいです...リフレッシュテーブルのテーブルビューセルの私のコード

- (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++; 

    } 
} 

コードです... 。事前に

おかげ

+0

誰?? !!!!!!! – Emon

答えて

2

てみチェンジ "MyIdentifier" へ のUITableViewCell *セル= "ゼロ" [のtableView dequeueReusableCellWithIdentifier:nilを];

・ホープ、この作品!私を助けるために平和

+0

ありがとうございます。あなたはすばらしい雇用者をやっています...もう一度ありがとう.... – Emon

+0

すばらしい答え!!!! – Mann

+0

誰もがなぜこれが起こっているの根本的な原因とチャイムすることができますか?どうして 'nil'はそれを修正しますか? – cksubs

関連する問題