2012-02-06 10 views
7

Ho 20 righe in una vista tabella e ho progettato (o detto ridimensionato) UITableView in metà dello schermo (Uso IB) e in mezzo schermo Sto mostrando le cose relative a UITableViewCell particolare. I dettagli della cella che verranno mostrati nella metà schermo sono decisi in fase di esecuzione. Voglio che la cella sia visibile durante il caricamento della vista per dire la penultima cella.Come rendere UITableViewCell visibile sullo schermo mentre si hanno più righe in UITableView

Come posso ottenere questo risultato?

risposta

11

UITableView classe offre:

-(void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath 
      atScrollPosition:(UITableViewScrollPosition)scrollPosition 
        animated:(BOOL)animated; 

che sembra essere quello che stai cercando.

L'oggetto NSIndexPath può essere costruito utilizzando:

+(NSIndexPath *)indexPathForRow:(NSInteger)row inSection:(NSInteger)section; 
7

Prova scrollToRowAtIndexPath:atScrollPosition:animated::

NSUInteger indexArray[] = {1,15}; 
NSIndexPath *indexPath = [NSIndexPath indexPathWithIndexes:indexArr length:2]; 
[yourTableView scrollToRowAtIndexPath:indexPath atScrollPosition: UITableViewScrollPositionTop animated:YES]; 
+0

Grazie per l'aiuto ..., – Krishna

15

ho trovato il modo più semplice per garantire che una cellula intera è visibile è quello di chiedere al Tableview per assicurarsi che il rect per la cella è visibile:

[tableView scrollRectToVisible:[tableView rectForRowAtIndexPath:indexPath] animated:YES]; 

Un facile il modo per testarlo è semplicemente inserirlo in -(void)tableView:didSelectRowAtIndexPath: - toccando qualsiasi cella lo farai scorrere in posizione se è parzialmente nascosto.

+2

Questo è proprio quello che stavo cercando. Un avvertimento però ... Se si dispone di altezze di celle dinamiche (ad esempio, variazioni di altezza all'interno di didSelectRowAtIndexPath), è necessario un riempimento aggiuntivo nella parte inferiore della tabella. –

+0

In effetti sembra funzionare molto meglio del metodo effettivo per scorrere verso un percorso indice –

1

Swift versione 4 della risposta di Nico Tewinkel, che ha funzionato meglio per me:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     tableView.scrollToRow(at: indexPath, at: .middle, animated: true) //scrolls cell to middle of screen 
} 
Problemi correlati