Получить выбранный индекс UITableView


104

Я хочу выбрать индекс для UITableView. Я написал следующий код:

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

Это всегда работает для 1-го пункта. Я хочу выбрать указатель вindexPathForRow.

Пожалуйста помоги. Спасибо.

Ответы:


216
NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];

5
Если вы разрешаете множественный выбор, рассмотрите возможность использования: - (NSArray *) indexPathsForSelectedRows
yura

Как только вы это получите, *selectedIndexPathмне будет полезно иметь доступ к конкретным выборкам long pathRow = [selectedIndexPath row];и long pathSection = [selectedIndexPath section];тогда, когда они вам понадобятся (обратите внимание, что NSIntegerто, typedef longчто исходит из фона C, имеет больше смысла, поскольку и то, и другое в %ldлюбом случае необходимо .
Джонатан Вайнрауб,

8

Получить текущую выбранную строку. Может быть полезно, если у вас только один раздел.

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

5

Используйте этот код

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

В didSelectRowAtIndexPath установите интерфейс, объявленный NSIndexPath, как возвращаемый путь индекса. Затем вы можете перейти к этой переменной. Если вам нужна помощь, прокомментируйте, и я могу дать образец кода.


В качестве альтернативы вы можете использовать метод Криса для более быстрого использования. Вышеупомянутый метод предлагает больше контроля и может быть изменен вашим (примерным) контроллером детального представления.
Колин Кревинкель

1

Swift 4.2

let selectedIndexPath = tableView.indexPathForSelectedRow

которое является необязательным возвращаемым значением.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.