经过多次搜索SO之后,我还没有找到一个似乎不是意见论证的解决方案。以前在代码中,我可以通过以下代码实现我想要的结果(长路线是......)
if(indexPath.section == 0 && indexPath.row == 0) {
DetailViewController *dvc = [[[DetailViewController alloc] init] autorelease];
dvc.detail = data.city1;
[self.navigationController pushViewController:dvc animated:YES];
}
if(indexPath.section == 0 && indexPath.row == 1) {
DetailViewController *dvc = [[[DetailViewController alloc] init] autorelease];
dvc.detail = data.city2;
[self.navigationController pushViewController:dvc animated:YES];
等等,为每个单元格提供在选择时执行的特定操作,并将数组传递给下一个视图。我的所有研究看起来都是风格和意见的差异,混合了将segue挂钩到视图控制器或特定单元格之间的不一致以及在didSelectRow或prepareForSegue之间使用哪种方法。以下代码挂钩到storyboard中的单元格,因此该部分中的每个单元格现在将相同的数据传递给下一个tableview。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"shows"])
{
ShowsList *viewController = segue.destinationViewController;
viewController.detail = data.city1;
}
}
我的问题是如何在prepareForSegue中处理indexPath.row以实现我以前在代码中执行的操作并根据选择的行传递特定的数组?我曾尝试恢复故事板和代码的混合,这是一个失败,创建多个自定义单元格似乎打败了“无乱”方法的整个目的,以及不同答案的多种变化。再说一次,我怎么说“嘿,当选择这个时通过这个信息,当选择这个通过这个信息......?”使用prepareForSegue方法
答案 0 :(得分:1)
prepareForSegue:sender:中的sender参数将是您选择的单元格,因此您可以像这样获取indexPath,
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(UITableViewCell *)sender {
NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
// use the indexPath to query your array
}