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.

Odpowiedzi:


216
NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];

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

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

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.


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ą.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.