If you are using a storyboard:
.h
@interface YourTableViewController : UIViewController 
{
// you just need int selectedRow inside of @interface
int selectedRow;
}
.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // this method is going to give you NSIndexPath *indexPath
    selectedRow = indexPath;
    [self performSegueWithIdentifier:@"nameOfYourSegue" sender:self];
}
You might already have this method, add the code inside of it if that's the case. This method is called when a segue is about to perform.
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"nameOfYourSegue"]){
    //Pass data from one controller to the next
    [[segue destinationViewController] setRowIndex:selectedRow];
}
}
selectedRow is going to have the index of which row was selected with 0 being the first row.
In your next view controller's class:
.h
- (void)setRowIndex:(int)rowIndex;
.m 
- (void)setRowIndex:(int)rowIndex
{
     //assign your variable to rowIndex
}
Once you have this working, you can edit this code to pass an array of information.