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.

Respostas:


216
NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];

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

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

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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.