Get Selected index of UITableView

84,967

Solution 1

NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];

Solution 2

Get current selected row. May be helpful if you have only one section.

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

Solution 3

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

Solution 4

In didSelectRowAtIndexPath, set an interface declared NSIndexPath as the indexpath returned. Then you can scroll to that variable. If you need help, comment and I can give some sample code.

Solution 5

Swift 4.2

let selectedIndexPath = tableView.indexPathForSelectedRow

which is an optional return value.

Share:
84,967

Related videos on Youtube

iOSDev
Author by

iOSDev

Mobile Application Developer by profession

Updated on July 08, 2022

Comments

  • iOSDev
    iOSDev almost 2 years

    I want to have selected index for UITableView. I have written following code:

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

    This always work for 1st item. I want to have selected index in indexPathForRow.

    Please help. Thanks.

  • Kolin Krewinkel
    Kolin Krewinkel over 13 years
    Alternatively, you can use Chris's method for quicker use. The above method offers more control and can be modified by your (example) detail view controller.
  • yura
    yura over 9 years
    If you allow multiple selections, consider using: - (NSArray *)indexPathsForSelectedRows
  • Jonathan Weinraub
    Jonathan Weinraub about 4 years
    Once you have that *selectedIndexPath it is useful for me to have access to long pathRow = [selectedIndexPath row]; and long pathSection = [selectedIndexPath section]; when you need specific selections (note that NSInteger is a typedef long which coming from a C background makes more sense since both need %ld anyway.
  • AntonSack
    AntonSack over 3 years
    Straight and simple. Thanks!