UITableViewCell 中的按钮 [重复]

Posted

技术标签:

【中文标题】UITableViewCell 中的按钮 [重复]【英文标题】:Buttons in UITableViewCell [duplicate] 【发布时间】:2015-05-04 12:00:34 【问题描述】:

我有一个 UITableViewCell,里面有一个按钮,当我按下按钮时,它会移动到下一个视图,但我需要传递 TableViewCell 的索引,但我找不到它,因为它不在 DidSelectCellAtIndexPath 中,它只是可按下的按钮。

如何找出 Button 的 indexPath 以及为什么会崩溃?

【问题讨论】:

在那个按钮上添加标签并传递这个标签! 可以通过 DidSelectRowAtIndexPath 获取索引 在这里查看我的解决方案***.com/a/22827645/790842。您可以将NSIndexPath 创建为属性并按照那里的描述使用它。 将索引行指定为该按钮的标记,然后在单击时检索它 在此处查看解决方案***.com/questions/7504421/… 【参考方案1】:

一个非常简单的解决方案:-

(void)btnAction:(id)sender
  CGPoint btnRectPoint = [sender convertPoint:CGPointZero
                                   toView:self.tableView];
  NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:btnRectPoint]; // Here you can get your indexpath of table
NSLog(@"index.row=%d",indexPath);


【讨论】:

这可以工作并记录索引路径,但是在 prepareForSegue 中,如果我尝试将 indexPath 传递给 ViewController2.h 中的 IndexPath,它会因“无法识别的选择器发送到实例”而崩溃 我在 prepareForSegue 中的代码是-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender [super prepareForSegue:segue sender:sender]; ViewController2 *view = [segue destinationViewController]; view.indexPath = self.indexPath; 它在view.indexPath = self.indexPath 上中断。 self.indexPath 分配在 -(void)btnAction:(id)sender 的底部 inside (void)btnAction:(id)sender...... self.indexPath = indexPath; 我已经在单独的问题中发布了代码,当它允许我发布问题时将发布链接。我如何在 ViewController2 中初始化“self.indexPath”【参考方案2】:

您可以在UIViewController 中创建协议并实现委托方法。现在,当您单击UITableViewCell 内的按钮时,您可以将单元格对象本身作为参数传递给该委托方法。

-(void)protocolMethod:(id)sender   
    [self.delegate delegateMethod:self];  

在您的UIViewController 中,您可以从表格视图中获取此单元格的索引路径。

-(void)delegateMethod:(MyCustomCell*)cell 
    NSIndexPath *indexPath = [self.objTableView indexPathForCell:cell];

【讨论】:

以上是关于UITableViewCell 中的按钮 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Swift中带有按钮的UITableViewCell [重复]

UITableViewCell UIButton选择[重复]

滚动时 UITableViewCell 的选定按钮消失

UITableViewCell 中的圆形按钮

如何检测 UICollectionViewCell 中的 UITableViewCell 中的按钮点击?

为 UITableViewCell 上的特定按钮删除 UIButton 事件的链接