【问题标题】:IBAction for Buttons inside static Cell do not work with didSelectRowAtIndexPath is overrided静态单元格内按钮的 IBAction 不适用于 didSelectRowAtIndexPath 被覆盖
【发布时间】:2015-09-01 02:57:35
【问题描述】:

我有一些静态的UITableViewCells。其中一个内部有 5 个按钮。在didSelectRowAtIndexPath 内部,我处理所有单元格的选择事件,但里面有按钮的单元格除外。问题是一个单元格中的按钮的操作不起作用。 任何帮助将不胜感激。

【问题讨论】:

  • 请在此处提供您的代码
  • 当您选择行时,是否调用了 select 方法,但没有调用按钮目标方法,因此最好将一些标签设置为按钮,然后使用它的标签值调用按钮。
  • 感谢您的回复,问题是在单元格内触摸时会调用 didSelectRowAtIndexPath,但在触摸其中一个按钮时,既没有调用 IBAction,也没有调用 didSelectRowAtIndexPath
  • 您必须在 cellForRowAtIndexPath 中以编程方式创建按钮并为按钮编写目标方法
  • 检查按钮是否有选择器可以调用。

标签: ios uitableview uibutton ibaction


【解决方案1】:

最后我发现问题的根源在于完全不同的区域,heightForRowAtIndexPath 为该单元格返回了错误的高度(实际上是更小的高度),

因此,控制器将触摸解释为与我应该触摸的实际位置完全不同的位置

【讨论】:

    【解决方案2】:

    您没有cellForAtIndexPath 方法,但是您可以实现tableView:willDisplayCell:forRowAtIndexPath: 方法并为每个按钮添加目标,如下所示:

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
        // get a reference to button
        UIButton *button = (UIButton *)[cell viewWithTag:1];
        [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 2021-04-02
      • 2017-09-05
      相关资源
      最近更新 更多