Comment faire défiler UITableView vers une position spécifique

Comment puis-je faire défiler la cellule de la table à une position spécifique? J’ai un tableau qui montre 3 lignes (selon la hauteur). Ce que je veux, c’est que si je clique sur la 1ère rangée selon la hauteur du tableau, la 1ère rangée doit défiler et obtenir une nouvelle position (centre) et la même chose pour les autres rangées. J’ai essayé contenOffset mais n’a pas fonctionné ..

EDITED:

En résumé, quelque chose comme le sélecteur de données lorsque nous sélectionnons une ligne dans le sélecteur, la ligne défile vers le centre.

Merci..

il devrait fonctionner avec - (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated cette manière:

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

atScrollPosition pourrait prendre l’une de ces valeurs:

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

J’espère que ceci vous aide

À votre santé

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

Cela amènera votre tableview à la première ligne.

enfin j’ai trouvé … ça marchera bien quand la table n’affiche que 3 lignes … si les lignes sont plus nombreuses les modifications doivent être en conséquence …

 - (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 NSSsortingng *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } // Configure the cell. cell.textLabel.text =[NSSsortingng ssortingngWithFormat:@"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]; } 

Utilisez [tableView scrollToRowAtIndexPath:indexPath atScrollPosition:scrollPosition animated:YES]; Fait défiler le récepteur jusqu’à ce qu’une ligne identifiée par le chemin d’indexation se trouve à un emplacement particulier de l’écran.

Et

 scrollToNearestSelectedRowAtScrollPosition:animated: 

Fait défiler la vue de table pour que la ligne sélectionnée la plus proche d’une position spécifiée dans la vue de table se trouve à cette position.

Version rapide:

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

Enum: Ce sont les positions de défilement de tableView disponibles – ici pour référence. Vous n’avez pas besoin d’inclure cette section dans votre code.

 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() } } 

Il est à noter que si vous utilisez l’approche setContentOffset , cela peut entraîner un saut de la vue de la table / de la collection. J’essaierais honnêtement de faire cela autrement. Il est recommandé d’utiliser les méthodes de délégué de la vue de défilement qui vous sont données gratuitement.

Simplement une seule ligne de code:

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