2017-03-29 2 views
0

Ich habe eine UITableview mit zwei UILabels wie im Chat. Wenn das sichtbare UITableview gefüllt ist und wenn ich zusätzliche Zellen hinzufüge, verschwinden meine UILabel s.Label verschwindet, wenn Tabelle neu geladen/gescrollt wird

Es gibt möglicherweise andere UILabels, die sichtbar ist. Nur diese 2 Chat UILabels ist ausgeblendet. Kann mir jemand die mögliche Lösung vorschlagen?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 
ChatScreenViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ChatCell" forIndexPath:indexPath]; 
index = indexPath.row + 1; 
indexx = indexPath; 


cell.ChatLabel1.layer.cornerRadius = 8; 
cell.ChatLabel1.layer.masksToBounds = YES; 
cell.ChatLabel2.layer.cornerRadius = 8; 
cell.ChatLabel2.layer.masksToBounds = YES; 

cell.ImageviewLabel1.layer.cornerRadius = 20; 
cell.ImageviewLabel1.layer.masksToBounds = YES; 
cell.ImageviewLabel2.layer.cornerRadius = 20; 
cell.ImageviewLabel2.layer.masksToBounds = YES; 
cell.ImageviewLabel2.backgroundColor = [UIColor greenColor]; 



if([Replychat[indexPath.row] valueForKey:@"bot"] != NULL) 
{ 

    cell.ChatLabel1.text = [Replychat[indexPath.row] valueForKey:@"bot"]; 
    cell.ChatLabel2.hidden = YES; 
    cell.ImageviewLabel2.hidden = YES; 

    cell.TimeLabel1.text = TimeArray[indexPath.row]; 
} 
else 
{ 

    cell.ChatLabel2.text = [Replychat[indexPath.row] valueForKey:@"User"]; 
    cell.ChatLabel1.hidden = YES; 
    cell.ImageviewLabel1.hidden = YES; 
    cell.TimeLabel2.text = TimeArray[indexPath.row]; 
} 

return cell; 

}

+2

Fügen Sie Code Arbeit. und Screenshot auch. –

+1

das Problem ist die Wiederverwendbarkeit von Zellen. –

+0

@meowsush Sie müssen Ihre Frage mit cellForRowAtIndexPath Code aktualisieren und eine grobe Schätzung ist, dass Sie möglicherweise nicht Ihre UITableview nach dem Aktualisieren des Arrays neu geladen haben –

Antwort

1

Labels in custom TableView cells disappearing after scrolling

Mein Code ein, wenn else-Anweisung hat, wo ein Zweig cell.ChatLabel2.hidden einstellen = YES; aber der andere Zweig setzt nicht cell.ChatLabel2.hidden = NO ;. Sobald das Label also versteckt ist, wird es nie wieder verborgen. Wenn die Zelle mit dem versteckten Etikett wiederverwendet wird, bleibt das Etikett verborgen.

Hinzufügen cell.ChatLabel2.hidden = NO; (und jede andere 'inverse' Konfiguration erforderlich) zu Ihrer if-Anweisung.

0

Versuch:

//.... 
    cell.ImageviewLabel2.backgroundColor = [UIColor greenColor]; 
    // because tableview reuse uitableviewcell, so you must reset hidden status for lable 
    cell.ChatLabel2.hidden = NO; 
    cell.ChatLabel1.hidden = NO; 

    if([Replychat[indexPath.row] valueForKey:@"bot"] != NULL) 
    //.... 
0

Versuchen Sie, diese Art und Weise

  • (UITableViewCell *) tableview: (UITableView *) tableview cellForRowAtIndexPath: (NSIndexPath *) indexPath; {

ChatScreenViewCell * cell = [Tableview dequeueReusableCellWithIdentifier: @ "ChatCell" forIndexPath: indexPath];

if (Zelle == null) {

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
           reuseIdentifier:@"ChatCell"]; 

}

index = indexPath.row + 1;

indexx = indexPfad;

Zelle.ChatLabel1.layer.cornerRadius = 8;

cell.ChatLabel1.layer.masksToBounds = YES;

cell.ChatLabel2.layer.cornerRadius = 8;

cell.ChatLabel2.layer.masksToBounds = YES;

cell.ImageviewLabel1.layer.cornerRadius = 20;

cell.ImageviewLabel1.layer.masksToBounds = YES;

cell.ImageviewLabel2.layer.cornerRadius = 20;

cell.ImageviewLabel2.layer.masksToBounds = YES;

cell.ImageviewLabel2.backgroundColor = [UIColor greenColor];

if ([Replychat [indexPath.row] valueForKey: @ "bot"]!= NULL) {

cell.ChatLabel1.hidden = NO;

cell.ChatLabel1.text = [Replychat [indexPath.row] valueForKey: @ "bot"];

cell.ChatLabel2.hidden = YES;

cell.ImageviewLabel2.hidden = YES;

cell.TimeLabel1.text = ZeitArray [indexPath.row];

}

else {

cell.ChatLabel2.hidden = NO;

cell.ChatLabel2.text = [Replychat [indexPath.row] valueForKey: @ "Benutzer"];

cell.ChatLabel1.hidden = YES;

cell.ImageviewLabel1.hidden = YES;

cell.TimeLabel2.text = ZeitArray [indexPath.row];

}

Rückstellzelle;

}

Verwandte Themen