2010-07-30 15 views
9

Qual è la differenza tra l'aggiunta della vista secondaria a sé e/o alla visualizzazione contenuto?Sottoclasse UITableViewCell correttamente?

visualizzazione secondaria aggiunto all'auto

- (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { 
    UIImage *img = [UIImage imageNamed:@”lol.jpg”]; 
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; 
    [self addSubview:imgView]; 
    [imgView release]; 
    return self; 
} 

visualizzazione secondaria aggiunto contentView

- (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { 
    UIImage *img = [UIImage imageNamed:@”lol.jpg”]; 
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; 
    [self.contentView addSubview:imgView]; 
    [imgView release]; 
    return self; 
} 

risposta

25

Secondo il Apple docs:

La vista contenuto di un oggetto UITableViewCell è la superview predefinita per i contenuti visualizzato dalla cella. Se si desidera personalizzare le celle aggiungendo semplicemente viste aggiuntive, è necessario aggiungerle alla vista del contenuto in modo che vengano posizionate correttamente quando le transizioni delle celle entrano e escono dalla modalità di modifica.

Generalmente si aggiunge ad un contentView quando hai dimestichezza con il ridimensionamento e il posizionamento del suo sito web manipolato dalle impostazioni AutoResize, e sottoclasse UITableViewCell quando avete bisogno di qualche comportamento personalizzato e così via. La Guida alla programmazione di Apple Table View ha una grande sezione su customizing UITableViewCells.

0

Si dovrebbe sempre puntuale inserire la visualizzazione personalizzata nella cella contentView. Assicurarsi di non utilizzare

cell.textLabel?.text 
0

Il suo perché quando un tableviewcell va in editing modalità si aggiungerà altri controlli come tasto di cancellazione alla cella. quindi il tuo contenuto dovrebbe essere ridimensionato per fare spazio ai nuovi controlli. Se si aggiungono le sottoview direttamente a tableviewcell, questi controlli di modifica oscurerebbero le subviews aggiunte. La cella non può regolare le sue dimensioni quando si accede alla modalità di modifica (deve rimanere la larghezza della vista tabella). ma l'oggetto contentView può e lo fa. è per questo che dovresti aggiungere i tuoi subviews all'oggetto contentView.

Problemi correlati