Obtenir l'index sélectionné de UITableView

104

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

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

Cela fonctionne toujours pour le 1er élément. Je veux avoir sélectionné l'index dansindexPathForRow.

Veuillez aider. Merci.

iOSDev
la source

Réponses:

216
NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];
Chris Gummer
la source
5
Si vous autorisez plusieurs sélections, envisagez d'utiliser: - (NSArray *) indexPathsForSelectedRows
yura
Une fois que vous avez cela, *selectedIndexPathil m'est utile d'avoir accès long pathRow = [selectedIndexPath row];et long pathSection = [selectedIndexPath section];lorsque vous avez besoin de sélections spécifiques (notez que NSIntegerc'est un typedef longqui venant d'un arrière-plan C a plus de sens puisque les deux ont besoin de %ldtoute façon.
Jonathan Weinraub
8

Récupère la ligne sélectionnée actuelle. Cela peut être utile si vous n'avez qu'une seule section.

- (NSUInteger)currentSellectedRowIndex
{
    NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
    if (selectedIndexPath) {
        return selectedIndexPath.row;
    }
    else {
        return NSNotFound;
    }
}
ZevsVU
la source
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];
Vineesh TP
la source
4

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

Kolin Krewinkel
la source
Vous pouvez également 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 détaillée (exemple).
Kolin Krewinkel
1

Swift 4.2

let selectedIndexPath = tableView.indexPathForSelectedRow

qui est une valeur de retour facultative.

Davidrynn
la source