2010-10-27 11 views
95

Voglio avere l'indice selezionato per UITableView. Ho scritto seguente codice:Ottieni l'indice selezionato di UITableView

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

questo lavoro sempre per il 1 ° oggetto. Voglio selezionare l'indice in indexPathForRow.

Please help. Grazie.

risposta

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

Se si autorizzano selezioni multiple, considerare l'utilizzo di: - (NSArray *) indexPathsForSelectedRows – yura

+2

non funziona più –

+0

@Codecracker Ho testato il codice. Funziona ancora. – yuchaozh

4

In didSelectRowAtIndexPath, impostare un'interfaccia dichiarata NSIndexPath come il percorso di indice restituito. Quindi puoi scorrere fino a quella variabile. Se hai bisogno di aiuto, commenta e posso dare qualche codice di esempio.

+0

Si prega di inviare qualche esempio di codice – iOSDev

+4

codice di esempio: http://pastie.org/1254081 –

+0

In alternativa, è possibile utilizzare il metodo di Chris per l'uso più veloce. Il metodo sopra offre più controllo e può essere modificato dal tuo (esempio) controller di visualizzazione dei dettagli. –

5

Usa questo codice

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

Get corrente riga selezionata. Può essere utile se si dispone di una sola sezione.

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