如何在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) Segue
从viewController
连接
从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
您可以直接在sender
为prepareForSegue:sender:
方法获取sender
为UITableviewCell
。
- (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 }
我希望我帮助你。