如何获取所选行的索引路径?

How to get indexpath of the selected row?

我正在开发 Messenger 应用程序。我有一个带有自定义单元格的表格视图,其中包含一个图像视图和几个标签。

我想在点击不同的 UI 元素时加载不同的控制器。具体来说,我希望在点击 imageView 时加载 controllerA,在选择行的其余部分时加载 controllerB。

我在 imageview 顶部放置了一个按钮,并制作了一个 customcellclass 委托,以便在借助该按钮点击 imageview 时通知我的 tableviewcontroller - 现在我应该如何获取点击行 imageView 的索引路径??

//我的自定义类方法

-(IBAction)loadProfileButtonTapped:(id)sender{
    [self.loadProfileDelegate takeMeToProfile];
}

//我正在我的表视图控制器中实现这个方法

-(void)takeMeToProfile{
//need indexpath here
}

假设您的 table 视图被命名为 tableView,并且您在获取发件人的方法中获得了点击图像的引用:

CGPoint imagePosition = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:imagePosition]; 

All the credit to this so answer!

您不需要 indexpath 来实现您想要实现的目标。当您添加这些自定义视图时,只需为它们提供一个标签,以便在触发按钮单击事件时识别它们。

在自定义单元格的委托方法中传递对 self 的引用是很常见的,这样您就可以从父 VC 追踪 indexPath。试试切换这个:

-(void)takeMeToProfile

有了这个:

-(void)customCell:(CustomCell*)cell didTapTakeMeToProfile;

当您在 CustomCell 文件中实现它时,您只需调用 [self.loadProfileDelegate customCell:self didTapTakeMeToProfile]。现在您有了对单元格的引用,您可以从父级 VC 调用 tableView:indexPathForCell: 并使用您认为合适的结果 NSIndexPath