如何找出我没有使用didSelectRowAtIndexPath推送的单元格的indexPath?

时间:2013-03-03 16:31:54

标签: objective-c core-data uitableview nsfetchedresultscontroller

我有一个UITableView里面有自定义单元格,当它们中的UIButton被点击时会触发详细信息视图。点击单元格本身不会触发segue,这意味着永远不会调用didSelectRowAtIndexPath

在实现之前,我使用didSelectRowAtIndexPath来设置通过我的NSFetchedResultsController的{​​{1}}数组中的indexPath传递给详细信息视图的对象。由于我现在没有使用fetchedObjects,我无法在那里访问indexPath。

我已经尝试使用按钮的didSelectRowAtIndexPath,但由于它无法存储tag,因此当我在segue之前调用indexPath时,这不起作用。我也尝试访问按钮objectAtIndexPath以获取其superview,但这也不起作用,总是为零。

我怎么知道推送了哪个indexPath,以便我可以将正确的对象传递给我的细节控制器?

编辑:我想到了添加UIButton类别添加UIButton属性的想法,但是我很难做到这一点,因为它需要一个方法来沿着这个走。这种方法有用吗?

2 个答案:

答案 0 :(得分:2)

按照按钮的超级视图(或按钮的超级视图的超级视图)获取Cell并从tableview获取单元格的索引路径

答案 1 :(得分:0)

我通过在点击按钮时调用的方法添加以下内容来修复:

UIView *contentView = (UIView *)[sender superview];
UITableViewCell *cell = (UITableViewCell *)[contentView superview];
NSIndexPath *indexPath = [self.tableView indexPathForCell: cell];
_quote = [self.fetchedResultsController objectAtIndexPath: indexPath];
[self performSegueWithIdentifier: @"ViewDetail" sender: nil];