如何在prepareForSegue中获得indexpath

- (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]; } } 

我想访问选定的行index ,但显示为每个选定的行。 请帮帮我?

Swift 3.0 / iOS 10

tableView.indexPathForSelectedRow是在iOS 9中引入的

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let indexPath = tableView.indexPathForSelectedRow{ let selectedRow = indexPath.row let detailVC = segue.destination as! ParkDetailTableVC detailVC.park = self.parksArray[selectedRow] } } 

两种情况:

1) SegueviewController连接

didSelectRowAtIndexPath方法调用segue ,传递indexPath作为sender

 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self performSegueWithIdentifier:@"Action" sender:indexPath]; } 

然后你可以在prepareForSegue:sender:方法中获得indexPath作为发送prepareForSegue:sender:

 - (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

无需实现didSelectRowAtIndexPath方法,并执行UITableviewCell您可以直接在senderprepareForSegue:sender:方法获取senderUITableviewCell

 - (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]; } } 

喜欢这个

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(UITableViewCell *)sender { FTGDetailVC *detailVC = (id)segue.destinationViewController; NSIndexPath *indexPath = [self.tableView indexPathForCell:sender]; FTGNote *note = self.notes[indexPath.row]; [detailVC updateWithNote:note]; } 

对不起,我不明白你想做什么。 可以通过indexPath.row这个方法UITAbleViewDelegate ,当你点击你的tableView的单元格时,它会被调用:

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ self.myVariable = indexPath.row } 

然后你可以通过这种方式在prepareForSegue中访问这个值:

  - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ //do something with self.myVariable } 

我希望我帮助你。