dans mon application iPhone J'utilise un UITableView avec des cellules personnalisées. Ces cellules contiennent des étiquettes différentes, représentant principalement du texte. Mais j'utilise l'une des étiquettes comme une sorte d'indicateur d'état, en lui donnant des couleurs différentes. Depuis que le défilement est devenu assez lent, j'ai voulu réutiliser les cellules. Faire cela me donne un bon coup de pouce de performance mais le "label d'état" est mal affiché. Les couleurs ne sont plus correctes pour les différentes cellules (Toutes les autres étiquettes sont correctes).iPhone - Réutilisation de TableViewCells
Quelqu'un at-il rencontré de tels problèmes et peut me donner un indice?
Edit: Le code pour la coutume TableCell
- (void)setIncident:(Incident *)_incident{
[self setSelectionStyle:UITableViewCellEditingStyleNone];
incident = _incident;
streamNameLbl.text = incident.streamName;
jobNameLbl.text = incident.jobName;
workInProgressByLbl.text = incident.workInProgressBy;
NSDateFormatter *tempFormatter = [[NSDateFormatter alloc] init];
[tempFormatter setDateFormat:@"hh:mm"];
errorTimeLbl.text = [NSString stringWithFormat:@"%@", [tempFormatter stringFromDate:incident.errorTime]];
[tempFormatter setDateFormat:@"dd. MMM"];
plandateLbl.text = [NSString stringWithFormat:@"%@", [tempFormatter stringFromDate:incident.planDate]];
returnCodeLbl.text = [@"RC: " stringByAppendingString: incident.returnCode];
runNumberLbl.text = [@"Run: " stringByAppendingString: incident.runNumber];
severityLbl.text = incident.severity;
restartStatusLblValue.text = incident.restartStatus;
NSString * color = incident.severityColor;
NSString * colorR = [color substringWithRange:NSMakeRange(1, 2)];
NSString * colorG = [color substringWithRange:NSMakeRange(3, 2)];
NSString * colorB = [color substringWithRange:NSMakeRange(5, 2)];
unsigned intColorR = 0;
unsigned intColorG = 0;
unsigned intColorB = 0;
NSScanner *scanner = [NSScanner scannerWithString:colorR];
[scanner scanHexInt:&intColorR];
scanner = [NSScanner scannerWithString:colorG];
[scanner scanHexInt:&intColorG];
scanner = [NSScanner scannerWithString:colorB];
[scanner scanHexInt:&intColorB];
incidentStatusLbl.backgroundColor = [UIColor clearColor];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = incidentStatusLbl.bounds;
gradient.startPoint = CGPointMake(0, 0.5);
gradient.endPoint = CGPointMake(1, 0.5);
UIColor * startColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:1];
UIColor * endColor = [UIColor colorWithRed:intColorR/255.0 green:intColorG/255.0 blue:intColorB/255.0 alpha:1];
gradient.colors = [NSArray arrayWithObjects:(id)[startColor CGColor], (id)[endColor CGColor], nil];
[incidentStatusLbl.layer insertSublayer:gradient atIndex:0];
}
cellForRowAtIndexPath dans le UITableView
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
incidentCell = (IncidentCell *)[tableView dequeueReusableCellWithIdentifier:@"IncidentCell"];
if (incidentCell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"IncidentCell" owner:self options:nil];
incidentCell = [nib objectAtIndex:0];
NSLog(@"Loading cell from xib file");
}
else{
NSLog(@"Reusing cell");
}
NSMutableArray *sectionDetails = ((NSMutableArray *)[incidentDic objectForKey:[self.sortedSections objectAtIndex:[indexPath section]]]);
Incident *incident = [sectionDetails objectAtIndex:[indexPath row]];
[incidentCell setIncident:incident];
return incidentCell;
}
Montrez-nous du code. – rckoenes