Pobierz wybrany indeks UITableView

104

Chcę mieć wybrany indeks dla UITableView. Napisałem następujący kod:

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

To zawsze działa dla 1. pozycji. Chcę mieć wybrany indeks windexPathForRow.

Proszę pomóż. Dzięki.

iOSDev
źródło

Odpowiedzi:

216
NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];
Chris Gummer
źródło
5
Jeśli zezwalasz na wiele wyborów, rozważ użycie: - (NSArray *) indexPathsForSelectedRows
yura
Kiedy już to zrobisz, *selectedIndexPathprzydatny będzie dla mnie dostęp long pathRow = [selectedIndexPath row];i long pathSection = [selectedIndexPath section];kiedy będziesz potrzebować określonych wyborów (zauważ, że NSIntegerto jest to, typedef longktóre pochodzi z tła C ma większy sens, ponieważ i tak potrzebują obu %ld.
Jonathan Weinraub
8

Pobierz aktualnie wybrany wiersz. Może być pomocny, jeśli masz tylko jedną sekcję.

- (NSUInteger)currentSellectedRowIndex
{
    NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
    if (selectedIndexPath) {
        return selectedIndexPath.row;
    }
    else {
        return NSNotFound;
    }
}
ZevsVU
źródło
5

Użyj tego kodu

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
źródło
4

W didSelectRowAtIndexPath ustaw interfejs zadeklarowany jako NSIndexPath jako zwracaną ścieżkę indeksu. Następnie możesz przewinąć do tej zmiennej. Jeśli potrzebujesz pomocy, skomentuj, a mogę podać przykładowy kod.

Kolin Krewinkel
źródło
Alternatywnie możesz użyć metody Chrisa, aby przyspieszyć użycie. Powyższa metoda zapewnia większą kontrolę i może być modyfikowana przez (przykładowy) kontroler widoku szczegółów.
Kolin Krewinkel
1

Swift 4.2

let selectedIndexPath = tableView.indexPathForSelectedRow

która jest opcjonalną wartością zwracaną.

davidrynn
źródło