2010-10-27 3 views
95

Je souhaite avoir l'index sélectionné pour UITableView. J'ai écrit le code suivant:Obtenir l'index sélectionné de UITableView

NSIndexPath *index = [NSIndexPath indexPathForRow:1 inSection:0]; 
[tableView scrollToRowAtIndexPath:index 
       atScrollPosition:UITableViewScrollPositionTop 
         animated:YES]; 

Ce toujours travailler pour le 1er article. Je veux avoir sélectionné l'index dans indexPathForRow.

S'il vous plaît aider. Merci.

Répondre

201
NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow]; 
+5

Si vous autorisez plusieurs sélections, pensez à utiliser: - (NSArray *) indexPathsForSelectedRows – yura

+2

ne fonctionne plus –

+0

@Codecracker J'ai testé le code. Ça fonctionne encore. – yuchaozh

4

Dans didSelectRowAtIndexPath, définissez une interface déclarée NSIndexPath comme chemin d'index retourné. Ensuite, vous pouvez faire défiler jusqu'à cette variable. Si vous avez besoin d'aide, commentez et je peux donner un exemple de code.

+0

Oui s'il vous plaît un peu de code exemple – iOSDev

+4

Exemple de code: http://pastie.org/1254081 –

+0

Alternativement, vous pouvez utiliser la méthode de Chris pour une utilisation plus rapide. La méthode ci-dessus offre plus de contrôle et peut être modifiée par votre contrôleur de vue de détail (par exemple). –

5

Utilisez ce code

CGPoint location =[sender locationInView:self.tableView]; 
NSIndexPath *swipedIndexPath = [self.tableView indexPathForRowAtPoint:location]; 
UITableViewCell *swipedCell = [self.tableView cellForRowAtIndexPath:swipedIndexPath]; 
NSIndexPath *indexPath = [self.tableView indexPathForCell:swipedCell]; 
7

Retourne une ligne sélectionné. Peut être utile si vous avez une seule section.

- (NSUInteger)currentSellectedRowIndex 
{ 
    NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow]; 
    if (selectedIndexPath) { 
     return selectedIndexPath.row; 
    } 
    else { 
     return NSNotFound; 
    } 
} 
Questions connexes