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

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

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

【问题讨论】:

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

标签: ios uitableview uibutton didselectrowatindexpath


【解决方案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];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-25
    • 2015-05-13
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多