2010-10-27 22 views
95

Ich möchte Index für UITableView ausgewählt haben. Ich habe folgenden Code geschrieben:Get Selected Index von UITableView

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

Diese immer für 1. Einzelteil arbeiten. Ich möchte Index in indexPathForRow.

ausgewählt haben Bitte helfen Sie. Danke.

Antwort

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

Wenn Sie mehrere Auswahlen zulassen, sollten Sie Folgendes in Betracht ziehen: - (NSArray *) indexPathsForSelectedRows – yura

+2

funktioniert nicht mehr –

+0

@Codecracker Ich habe den Code getestet. Es funktioniert noch. – yuchaozh

4

Setzen Sie in didSelectRowAtIndexPath eine Schnittstelle, die als NSIndexPath deklariert wurde, als zurückgegebener Indexpfad. Dann können Sie zu dieser Variablen blättern. Wenn Sie Hilfe benötigen, kommentieren Sie und ich kann Ihnen einen Beispielcode geben.

+0

Ja bitte einige Beispiel-Code – iOSDev

+4

Beispielcode schreiben: http://pastie.org/1254081 –

+0

Alternativ können Sie Chris Methode zur schnelleren Nutzung verwenden. Die obige Methode bietet mehr Kontrolle und kann von Ihrem (Beispiel) Detailansicht-Controller geändert werden. –

5

Verwenden Sie diesen 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]; 
7

aktuell ausgewählte Zeile holen. Kann hilfreich sein, wenn Sie nur einen Abschnitt haben.

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