GETTING INDEXPATH IN PREPAREFORSEGUE

Mark Devid

Total Post:102

Points:714
Posted by  Mark Devid
iPhone  Ios 
 1720  View(s)
Ratings:
Rate this:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    {
    if ([segue.identifier isEqualToString:@"Action"])
    {
        NSIndexPath *indexPath = [self.tbl indexPathForSelectedRow];
        SecondViewController *destViewController = segue.destinationViewController;
        destViewController.getString = [getArray objectAtIndex:indexPath.row];
    }
}
i wanna to access the selected row index,but show null for every selected row. please help me?
  1. Royce Roy

    Post:149

    Points:1043
    Re: Getting indexpath in prepareForSegue

    Two cases:

    1)Segue connected from the viewController

    Call segue from your didSelectRowAtIndexPath method, pass indexPath as sender

    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        [self performSegueWithIdentifier:@"Action" sender:indexPath];
    }
    Then you can get indexPath as sender in prepareForSegue:sender: method

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
     {
         if ([segue.identifier isEqualToString:@"Action"])
          {
               NSIndexPath *indexPath = (NSIndexPath *)sender;
               SecondViewController *destViewController = segue.destinationViewController;
               destViewController.getString = [getArray objectAtIndex:indexPath.row];
          }
      }
    2)segue connected from the cell

    No need to implement didSelectRowAtIndexPath method and performSegueWithIdentifier:.You can directly get sender as UITableviewCell in prepareForSegue:sender: method.

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    {
        if ([segue.identifier isEqualToString:@"Action"])
        {
            NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
            SecondViewController *destViewController = segue.destinationViewController;
            destViewController.getString = [getArray objectAtIndex:indexPath.row];
        }
    }

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!