2010-08-30 18 views
28

Ho creato un UITableViewCell personalizzato in IB, ma per qualche motivo, nonostante l'opzione a riga singola per il separatore selezionato, non ci sono linee di separazione sulla tabella.Il separatore UITableViewCell non viene visualizzato

Questo è successo a qualcuno di voi prima? Cosa dà?

Grazie!

risposta

47

UITableViewCell in IB è associato a una sottoclasse UITableViewCell che sostituisce drawRect:? Se è così, assicurati di chiamare la super implementazione, poiché è quello che disegna la linea in basso. Se si sta eseguendo l'override di layoutSubviews, assicurarsi che nessuna vista oscuri la parte inferiore della cella.

+51

Inoltre, se stai ignorando layoutViewview, assicurati di chiamare [super layoutSubviews]; prima – codecaffeine

+1

@codecaffeine Gesù, grazie per questo. – ZShock

+1

@codecaffeine Ha funzionato anche per me. Grazie –

1

Ho trovato separatorStyle in UITableView class reference. Dice che aggiungerà separatorStyle alla cella restituita dal metodo delegato, tableView:cellForRowAtIndex:.

Quindi, penso che dovresti modificare la proprietà di stile sull'istanza di UITableView.

+0

Non è possibile assegnare lo stile separatore in questo metodo. – Shmidt

+0

@Shmidt, ho riletto il documento Apple, http://goo.gl/FgTirp. ** UITableView utilizza questa proprietà per impostare lo stile separatore sulla cella restituita dal delegato in tableView: cellForRowAtIndexPath:. ** – AechoLiu

+0

che è assolutamente giusto. – Shmidt

22

Nel mio caso, ho dimenticato di chiamare [super layoutViewsubviews] dopo aver annullato il metodo layoutSubviews. Mi ci sono voluti due ore per trovare il problema.

+1

sì ... ho anche avuto lo stesso problema –

2

nel mio caso devo impostare la proprietà separatorStyle del tableView

tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;

0

Forse un caso improbabile, ma c'è un altro possibile causa.

Ho un numero personalizzato UITableView denominato AddressBookTableView ed è incluso in un .XIB per uno dei miei controller di visualizzazione. La cosa che ho notato è che è stato aggiunto come elemento UIView con classe personalizzata specificata come AddressBookTableView. Ho eliminato questo elemento e ho aggiunto un elemento UITableView, la cui classe I ha specificato nuovamente AddressBookTableView e i separatori sono magicamente ricomparsi!

Mi c'è voluto molto tempo eccellente per trovare questo ...

assicurarsi che la vostra abitudine UITableView .XIB elementi sono infatti personalizzato UITableView elementi NON rinominati UIView elementi.

A dire il vero, sono sorpreso che l'unico artefatto evidente di questo errore fosse la mancanza dei separatori. Oltre a questo, UITableView funzionava ancora normalmente?

50

Solo un testa a testa, anche se questo è un vecchio post:

Se si utilizza il simulatore e il separatore UITableView non compare tra le cellule, può essere dovuto al fatto che la vostra bilancia finestra è troppo piccola .

Modifica questo andando a Finestra-> Scale-> 100%

+4

Questo è stato il motivo nel mio caso. Mi ci sono voluti ore per capire. – Ali

+3

Dio! Sono stato alle prese con questo per ore! Grazie! – enricmacias

+2

Mille grazie ... stava iniziando a perdere la volontà! – RJH

0

Se si aggiunge a livello di codice subviews per il tuo cellulare, assicurarsi che si aggiungono i subviews

a cellulare.contentView e NON per cella

[cell.contentView addSubview:subview]; 
0

Per chiunque vedendo questo: Il mio problema era che avevo più sezioni, e la prima cella in ogni sezione non ha avuto un separatore. Nella mia vista tabella, avevo sovrascritto la funzione heightForHeader (restituendo 0). L'eliminazione di questo ha risolto il problema.