从自定义表格单元格中发送参数以进行segue?

时间:2014-02-08 07:19:01

标签: ios iphone uitableview segue

我有一个UITableView个自定义表格单元格,上面有几个控件 - 其中一个是按钮。

单击单元格本身时,我将通过segue将一些数据发送到视图控制器 - 工作正常。

我想在单击单元格内的按钮窗体时打开一个不同的视图控制器 - 再次发送一些数据。

按钮连接到视图控制器,当单击按钮时,该控制器打开正常。

问题是我无法获取IndexPath中的prepareForSegue以设置我希望发送给视图控制器的参数。

此代码带来表数据源中的第一个对象:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
 if([segue.identifier isEqualToString:@"CommentSegue"])
 {

    NSIndexPath *path = [self.tableView indexPathForSelectedRow];
    NSDictionary *detail = [myObject objectAtIndex:path.row];
    CommentViewController *navController = segue.destinationViewController;
    navController.data=detail;
 }
}

虽然我想要按钮所属的n项......

感谢。

1 个答案:

答案 0 :(得分:4)

你永远不应该从细胞内部调用一个segue。

填充单元格的数据时,必须在-tableView: cellForRowAtIndexPath:中为按钮定义目标。

这样做:

[cell.theButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];

并获取该按钮所属行的索引,请使用此技巧: cell.theButton.tag = indexPath.row

然后您可以像这样处理表格视图控制器上的点击:

-(void) buttonClicked:(UIButton *) button
{
     NSInteger index = button.tag;
     // now prepare the data and perform segue
}