2009-10-08 13 views
5

Problema: Il separatore tra le celle in una vista tabella viene visualizzato solo per le celle mostrate al caricamento della vista e solo al momento del caricamento. Quando la vista tabella è scorsa verso il basso, le celle scorrono nella vista non mostrano alcun separatore tra di loro, quindi quando la vista tabella viene fatta scorrere di nuovo, le celle iniziali non mostrano alcun separatore.UITableLe linee di separazione del separatore scompaiono tra le celle sullo scroll

Dettagli: Ho un UITableView a cui sto aggiungendo UITableViewCells standard. Queste celle sono create con initWithFrame, frame height = 90px. Sto aggiungendo una vista personalizzata creata da un pennino alla vista di questa cella, height = 90px. L'altezza della cella è specificata a 90px in tableView: heightForRowAtIndexPath :.

Qualcuno ha riscontrato questo comportamento?

risposta

6

Ho avuto la sensazione che la soluzione sarebbe semplice ... Ho fatto l'altezza delle mie celle 91 px e le linee di separazione appaiono come dovrebbero scorrere.

3

Non ho potuto utilizzare la soluzione di Douglas perché i miei tavoli hanno un'enorme quantità di celle e diventerebbero praticamente inutilizzabili sui vecchi telefoni. Riutilizzare le celle è la chiave per le prestazioni.

MA, sono riuscito a soluzione il problema utilizzando un separatore trasparente e aggiungendo mia nel contentView della cella, come segue:

yourTable.separatorColor = [UIColor clearColor]; 
separatorView.frame = FactRectMake(0, rowHeight-1, appFrame.size.width, 0.2); 
3

Ho avuto lo stesso problema, ma usata una soluzione diversa. miei separatori stavano scomparendo perché ero Clearing mia cella utilizzando:

for (UIView *eachView in self.subviews) { 
    [eachView removeFromSuperview]; 
} 

Questa rimosso la vista di separazione, come pure!

Invece, ho assegnato un tag per ciascuno dei miei punti di vista doganali (tre etichette) a destra prima di aggiungerli alla vista sub:

tempFirstNameLabel.tag = 100; 
self.firstNameLabel = tempFirstNameLabel; 
[self addSubview:self.firstNameLabel]; 

Poi, quando ho cancellato il cellulare, ho appena rimosso quelle viste:

for (int i = 100; i<103; i++) { 
    UIView *eachView = [self viewWithTag:i]; 
    [eachView removeFromSuperview]; 
} 

Spero che questo aiuti! Ciò evita anche i problemi di gestione della memoria che la soluzione di @Douglas Smith poneva.

1

Si dovrebbe impostare il separatore nessuno e poi di nuovo sola linea

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    // it is a bug in iOS 7 
    tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
    tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; 
Problemi correlati