我有一个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项......
感谢。
答案 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
}