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.

Réponses:


216
NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];

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;
    }
}

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];

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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.