2015-06-09 12 views
5

Ho una vista tabella, in cui le celle hanno un'etichetta con un testo attribuito. Il testo viene impostato correttamente da cellForRowAtIndexPath. Il colore del testo viene impostato correttamente ma l'attributo grassetto non viene visualizzato finché la cella non viene rimossa dalla coda.La stringa attribuita in tableviewcell non mostra il testo in grassetto finché la cella non viene rimossa dalla coda e ricaricata

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     MyCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifier]; 
     Model *model = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
     cell.tag = indexPath.row; 
     [cell updateContentWithModel:model atIndexPath:indexPath]; 
     return cell; 
} 


- (void)updateContentWithModel:(Model *)model atIndexPath:(NSIndexPath *)indexPath 
{ 
self.model = model; 
[self setTextFromModel]; 
[self setImageFromModelAtIndexPath:indexPath]; 
} 

- (void) setTextFromModel 
{ 
self.title.text = self.model.header; 
self.status.attributedText = [self boldString:self.model.status fontSize:self.status.font.pointSize color:[UIColor redColor]]; 
} 

+(NSMutableAttributedString *)boldString:(NSString *)stringToBold fontSize:(CGFloat)fontSize color:(UIColor *)color 
{ 
NSMutableAttributedString *boldString = [[NSMutableAttributedString alloc] initWithString:stringToBold]; 
[boldString setAttributes:@{NSForegroundColorAttributeName: color, 
          NSFontAttributeName:[UIFont boldSystemFontOfSize:fontSize]} range:NSMakeRange(0, boldString.length)]; 
return boldString; 
} 

Qualcuno ha mai provato qualcosa del genere?

+0

Stai chiamando 'setNeedsDisplay'? –

+0

Sarebbe utile mostrare il codice che si utilizza per creare la stringa attribuita e assegnarla all'etichetta –

+0

È necessario setNeedsDisplay? Non sto utilizzando drawRect per nulla e le etichette vengono aggiornate automaticamente quando si aggiorna il testo. Il mio problema è che l'etichetta si sta aggiornando al testo attribuito, ma l'attributo in grassetto sembra essere mancante/perso fino a quando la cella non è stata rimossa dalla coda. – Cen92

risposta

1

Ho lo stesso problema a causa di UIA. Imposta font \ color su nil prima di impostare il testo attribuito da UILabel per me.