2009-12-22 11 views
5

ich eine Zelle geschaffen habenUITableView-Header flackern, wenn wir wiederverwenden die Zelle Identifier

static NSString *CellIdentifier = @"TweetListUserName"; 

CustomTableViewCell *cell = (CustomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
     cell = [[[CustomTableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier]autorelease] ; 
} 

mit und verwendet den folgenden Code ein Abschnitt Kopf einzurichten:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 

     UIView* customView = [[[UIView alloc] initWithFrame:CGRectMake(0.0, -4.0, 320.0, 67.0)]autorelease]; 
     [customView setOpaque:YES]; 
     UIImageView *image = [[UIImageView alloc] initWithFrame:CGRectMake(-2.0, -4.0, 328.0, 67.0)]; 
     [image setImage:[UIImage imageNamed:@"header-msg.png"]]; 
     [image setOpaque:YES]; 
     [customView addSubview:image]; 

     UILabel *label1 =[[UILabel alloc] initWithFrame:CGRectMake(10, 5, 100, 12)]; 
     label1.text [email protected]"TWEETS MATCHING:"; 
     label1.textAlignment=UITextAlignmentLeft; 
     [label1 setTextColor:[UIColor grayColor]]; 
     [label1 setFont:[UIFont fontWithName:@"Helvetica" size:9]];; 
     [label1 setBackgroundColor:[UIColor clearColor]]; 
     [customView addSubview:label1]; 
     [label1 release]; 

     UILabel *label2 =[[UILabel alloc] initWithFrame:CGRectMake(10, 6, 315, 50)]; 
     label2.text =usernametag; 
     label2.textAlignment=UITextAlignmentLeft; 
     [label2 setTextColor:[UIColor blackColor]]; 
     [label2 setFont:[UIFont fontWithName:@"Helvetica-Bold" size:20]]; 
     [label2 setBackgroundColor:[UIColor clearColor]]; 
     [customView addSubview:label2]; 
     [label2 release]; 


     return customView; 

    } 

Allerdings, wenn ich schnell blättern Die Tabelle flackert in fast allen Fällen. Wie kann ich dieses Flackern verhindern?

Antwort

0

Hallo ich denke, Sie müssen testen, ob es bereits eingestellt ist. Wie Sie es jetzt haben, wird es den obigen Code jedes Mal ausführen, wenn Sie scrollen, was bedeutet, dass es ziemlich oft eingestellt wird.

+0

tatsächlich nicht im Code erwähnt, aber ich gebe benutzerdefinierte Ansicht frei – crystal

+0

Dies ist nicht die Ursache der Kopfzeile für diese Zelle flackern. Ich weiß, das ist eine alte Frage ... aber jetzt passiert es mir. – Jann

+0

Rufen Sie [tableView reloadData] an einer beliebigen Stelle auf, die wiederholt aufgerufen wird? – RickiG

0

Ich hatte ein ähnliches Problem.

In meinem Fall war der Grund innerhalb der benutzerdefinierten Tabellenzelle. In meiner benutzerdefinierten Tabellenzelle habe ich ein UITextView-Objekt verwendet, dessen Eigenschaft scrollEnabled auf NO und die bearbeitbare Eigenschaft auf NO gesetzt ist.

Das Problem wurde mit scrollEnabled = NO verknüpft. Mit scrollEnabled = YES habe ich keine Probleme.

jedoch als UITextView ohne Bearbeitung und Scrollen nicht viel anders aus einem UILabel ist, ersetzte ich die UITextView mit UILabel Einstellung NumberOfLines auf 0

Fragen Sie mich nicht, warum. Es funktionierte irgendwie so. :)

Verwandte Themen