Obter índice selecionado de UITableView

104

Eu quero ter um índice selecionado para UITableView. Eu escrevi o seguinte código:

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

Isso sempre funciona para o primeiro item. Eu quero ter selecionado o índice emindexPathForRow.

Por favor ajude. Obrigado.

iOSDev
fonte

Respostas:

216
NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];
Chris Gummer
fonte
5
Se você permitir várias seleções, considere usar: - (NSArray *) indexPathsForSelectedRows
yura
Assim que tiver isso *selectedIndexPath, será útil para mim ter acesso long pathRow = [selectedIndexPath row];e long pathSection = [selectedIndexPath section];quando você precisar de seleções específicas (observe que NSIntegeré um typedef longque vindo de um background C faz mais sentido, já que ambos precisam de %ldqualquer maneira.
Jonathan Weinraub
8

Obtém a linha atual selecionada. Pode ser útil se você tiver apenas uma seção.

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

Use este código

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
fonte
4

Em didSelectRowAtIndexPath, defina uma interface declarada NSIndexPath como o indexpath retornado. Em seguida, você pode rolar até essa variável. Se precisar de ajuda, comente e posso dar alguns exemplos de código.

Kolin Krewinkel
fonte
Como alternativa, você pode usar o método de Chris para um uso mais rápido. O método acima oferece mais controle e pode ser modificado por seu controlador de visualização de detalhes (exemplo).
Kolin Krewinkel
1

Swift 4.2

let selectedIndexPath = tableView.indexPathForSelectedRow

que é um valor de retorno opcional.

Davidrynn
fonte