Come scorrere UITableView in una posizione specifica

Come posso scorrere la cella del tavolo in una posizione specifica? Ho una tabella che mostra 3 file (in base all’altezza). quello che voglio è se clicco sulla 1a riga che in base all’altezza del tavolo la prima riga dovrebbe scorrere e ottenere una nuova posizione (centro) e lo stesso per altre righe. Ho provato contenOffset ma non ha funzionato ..

MODIFICATO :

In breve, qualcosa come il selettore dati quando selezioniamo una riga nel selettore, la riga scorre verso il centro.

Grazie..

dovrebbe funzionare usando - (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated usando questo modo:

 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; [yourTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; 

atScrollPosition potrebbe assumere uno qualsiasi di questi valori:

 typedef enum { UITableViewScrollPositionNone, UITableViewScrollPositionTop, UITableViewScrollPositionMiddle, UITableViewScrollPositionBottom } UITableViewScrollPosition; 

Spero che questo ti aiuta

Saluti

 [tableview scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO]; 

Questo porterà la tua vista tabella in prima fila.

finalmente ho trovato … funzionerà bene quando la tabella mostra solo 3 righe … se le righe sono di più dovrebbero essere di conseguenza le modifiche …

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } // Customize the number of rows in the table view. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 30; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } // Configure the cell. cell.textLabel.text =[NSString stringWithFormat:@"Hello roe no. %d",[indexPath row]]; return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell * theCell = (UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath]; CGPoint tableViewCenter = [tableView contentOffset]; tableViewCenter.y += myTable.frame.size.height/2; [tableView setContentOffset:CGPointMake(0,theCell.center.y-65) animated:YES]; [tableView reloadData]; } 

Usa [tableView scrollToRowAtIndexPath:indexPath atScrollPosition:scrollPosition animated:YES]; Scorre il ricevitore fino a quando una riga identificata dal percorso dell’indice si trova in una particolare posizione sullo schermo.

E

 scrollToNearestSelectedRowAtScrollPosition:animated: 

Scorre la vista tabella in modo che la riga selezionata più vicina a una posizione specificata nella vista tabella sia in quella posizione.

Versione rapida:

 let indexPath:NSIndexPath = NSIndexPath(forRow: 0, inSection: 0) self.tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: UITableViewScrollPosition.None, animated: true) 

Enum: Queste sono le posizioni di scorrimento di tableView disponibili – qui per riferimento. Non è necessario includere questa sezione nel codice.

 public enum UITableViewScrollPosition : Int { case None case Top case Middle case Bottom } 

DidSelectRow:

 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let theCell:UITableViewCell? = tableView.cellForRowAtIndexPath(indexPath) if let theCell = theCell { var tableViewCenter:CGPoint = tableView.contentOffset tableViewCenter.y += tableView.frame.size.height/2 tableView.contentOffset = CGPointMake(0, theCell.center.y-65) tableView.reloadData() } } 

Vale la pena notare che, se si utilizza l’approccio setContentOffset , è ansible che la visualizzazione della vista tabella / raccolta venga saltata leggermente. Onestamente, proverei a fare questo in un altro modo. Un consiglio è di usare i metodi di delega della vista di scorrimento che ti vengono dati gratuitamente.

Semplice linea di codice:

 self.tblViewMessages.scrollToRow(at: IndexPath.init(row: arrayChat.count-1, section: 0), at: .bottom, animated: isAnimeted)