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

104

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

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

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

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

iOSDev
источник

Ответы:

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

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

Дэвидринн
источник